찾다
웹 프론트엔드HTML 튜토리얼svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

저는 영웅들이 Codepen에서 놀라운 애니메이션을 그리기 위해 SVG를 사용하는 것을 종종 봅니다. 저는 항상 그것이 어떻게 작동하는지 궁금했습니다. 저는 항상 SVG에 대한 철저한 이해가 필요하다고 생각합니다. SVG 패턴을 사용하면 그를 움직이게 할 수 있어요. Codepen上看到大侠们用SVG画出不可思议的动画,我一直很好奇他们是怎么运作的,总觉得这需要对SVG有足够透彻的了解,并且自己画出那些SVG图案,才有办法让他动起来。

但其实不然,今天教大家一个简单的小技巧,让你快速实现一个svg动画!

打开Codepen,点击界面中的build按钮,就可以使用动画构建一个房子,并且让它升起寥寥炊烟!

演示地址:https://codepen.io/johnYu243/pen/bGBVEwv

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

寻找精美的svg图案

既然自己画不出来,那我们就去找现成的库,svg库有很多,如Flaticon、iconfont、Iconfinder或icons8等网站会提供很多免费的svg图案。

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

分析svg图案

打开devtool观察 svg 图案,你会看到下面的结果:

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

element里头pathcircle都是svg的DOM元素,分别表示svg图案内的线条与圆形。

举个例子:

<path></path>

上面代码中的d的内容:M代表将笔移动到(10, 25),接着L画一条线到(10, 75),最后回到起点画出一个三角形。

通过devtool,我们可以看到每个path对应图案的哪个部分:

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

这时候应该形成思路,既然我们可以知道每个元素对应到图案的哪个部分,我们就可以针对想要套上动画的DOM 元素来操作!

TimelineLite/TimelineMax 工具

如果单纯通过id、className 来使用 CSS 或JavaScript 自行处理动画,难度还是颇高,更重要的是,要耗费大量的时间

所以我们得借用工具,Timeline(Lite|Max)跟TweenMax是知名的GreenSock Animation Platform(简称GSAP)推出的可创建时间轴(timeline)作为动画或其他时间轴的容器,这使得整个动画控制和精确管理时间变得简单。

GSAP甚至为我们提供了Ease Visualizer来展示每种Ease function的效果,更顺带附上代码:

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

演示地址:https://codepen.io/johnYu243/pen/jOVbMzX

简单几句代码就能达到如下效果:

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

上手GSAP

GSAP的API功能十分强大,还有相关社区:官网文档论坛TimelineMax中文手册

在一开始的房子构建例子中,我主要使用的是TimelineMax的fromstaggerFrom,这两个API只需要设定初始值,他会在指定时间内将补间动画完成:

  tl.from("#House > rect:nth-child(24)", 1, {
      scaleX: 0,
      transformOrigin: "center",
      ease: Power2.easeOut
    })

这一步我们将CSS Selector #House > rect:nth-child(24) 这个元素,从scaleX为0开始,以center(中心)为变形起点,利用Power2.easeOut,在一秒内回复到原始状态,并执行补间动画。

    .staggerFrom(
      ["#House > path:nth-child(34)", "#House > path:nth-child(32)"],
      0.8,
      {
        scaleY: 0,
        transformOrigin: "bottom",
        ease: Bounce.easeOut,
        stagger: 0.2
      },
      0,
      "scene1+=0.5"
    )

from相似,只是staggerFrom可以一次放入多个CSS Selector,用stagger这个属性来设置数组中的Selector要以怎样的时间差出现。

详细API参数可以参考官方文档

接着回到我们的SVG,在devtool的帮助下,要取出svg内部元素的 CSS Selector 非常容易,在element面板中找到对应的DOM元素点击右键,选择 Copy -> Copy selector

하지만 그렇지 않습니다. 오늘은 SVG 애니메이션을 빠르게 구현할 수 있는 간단한 방법을 가르쳐 드리겠습니다!

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!Codepen을 열고 인터페이스에서 build 버튼을 클릭하면 애니메이션을 사용하여 집을 짓고 연기와 함께 솟아오를 수 있습니다!

🎜데모 주소: https://codepen.io/johnYu243/pen/bGBVEwv🎜

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

아름다운 svg 패턴을 찾는 중

🎜직접 그릴 수는 없으니, 그런 다음 기성 라이브러리를 찾아보겠습니다. Flaticon, iconfont, Iconfinder 또는 Icons8과 같은 많은 svg 라이브러리가 많은 무료 svg 패턴을 제공합니다. 🎜🎜svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!🎜

svg 패턴 분석

🎜 devtool을 열고 svg 패턴을 관찰하면 다음 결과를 볼 수 있습니다: 🎜🎜svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!🎜🎜element pathcircle는 모두 svg입니다. DOM 요소는 각각 svg 패턴의 선과 원을 나타냅니다. 🎜🎜예: 🎜
<!--html part-->
<button> Build! </button>
<!--css part-->
<style>
#Capa_1 {
  margin: 0 auto;
  display: block;
  width: 256px;
  height: 100%;
}
</style>
🎜위 코드에서 d의 내용: M은 펜을 (10, 25)로 이동한 다음 L은 (10, 75)까지 선을 그리고 마지막으로 시작점으로 돌아가는 것을 의미합니다. 삼각형을 그립니다. 🎜🎜devtool을 통해 각 path가 패턴의 어느 부분에 해당하는지 확인할 수 있습니다: 🎜🎜svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!🎜🎜 이때 아이디어가 형성되어야 합니다. 각 요소가 패턴 중 어느 부분에 해당하는지 알 수 있으므로 타겟으로 삼을 수 있습니다. 원하는 애니메이션 DOM 요소를 넣어서 작동해보세요! 🎜

TimelineLite/TimelineMax 도구

🎜CSS나 JavaScript를 사용하여 단순히 id와 className을 통해서만 애니메이션을 처리한다면 여전히 꽤 어렵습니다. 더 중요한 것은 시간이 많이 걸린다는 것입니다🎜🎜그래서 우리는 이렇게 했습니다. 도구를 빌릴 수 있는 Timeline(Lite|Max)과 TweenMax는 잘 알려진 GreenSock 애니메이션 플랫폼(GSAP라고도 함)입니다. 애니메이션이나 기타 타임라인의 컨테이너로 타임라인(타임라인)을 생성할 수 있으므로 전체 애니메이션을 쉽게 제어하고 타이밍을 정확하게 관리할 수 있습니다. 🎜🎜GSAP는 각 Ease 기능의 효과를 보여주기 위해 Ease Visualizer도 제공합니다. 위 코드: 🎜🎜svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요! 🎜
🎜데모 주소: https://codepen.io/johnYu243/pen/jOVbMzX🎜
🎜몇 줄의 간단한 코드로 다음 효과를 얻을 수 있습니다.
🎜🎜svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!🎜

GSAP 시작하기

🎜GSAP의 API 기능은 매우 강력합니다. , 관련 커뮤니티가 있습니다: 공식 웹사이트 문서, 포럼, TimelineMax 중국어 매뉴얼 🎜🎜초기 집 짓기 예시에서는 주로 TimelineMax의 fromstaggerFrom을 사용했습니다. 이 두 API는 초기값만 설정하면 되는데, 지정된 시간 내에 트윈 애니메이션을 완료합니다. 🎜
  const tl = new TimelineMax();
  tl.staggerFrom(
      [
        "#Capa_1 > g > path:nth-child(1)",
        "#Capa_1 > circle:nth-child(7)",
        "#Capa_1 > path:nth-child(6)",
        "#Capa_1 > circle:nth-child(5)"
      ],
      1,
      {
        scaleY: 0,
        scaleX: 0,
        transformOrigin: "center",
        ease: Bounce.easeOut,
        stagger: 0.2
      }
    )
🎜이 단계에서는 scaleX에서 CSS 선택기 <code>#House &gt:nth-child(24) 요소를 변경합니다. code>를 0부터 시작하여 중심을 변형 시작점으로 사용하고 Power2.easeOut을 사용하여 1초 이내에 원래 상태로 돌아가서 트위닝 애니메이션을 수행합니다. 🎜rrreee🎜staggerFrom이 여러 CSS 선택기를 한 번에 배치할 수 있고 stagger 속성을 ​​사용하여 선택기 요구 사항을 설정할 수 있다는 점을 제외하면 from과 유사합니다. 배열은 어떤 시차로 나타납니까? 🎜🎜자세한 API 매개변수는 공식 문서를 참조하세요.🎜🎜그런 다음 SVG로 돌아가서, devtool에서 도움을 받으면 svg 내부 요소의 CSS 선택기를 제거하는 것이 매우 쉽습니다. 요소 패널에서 해당 DOM 요소를 찾아 마우스 오른쪽 버튼을 클릭하고 복사 -> 선택기 복사. 이 요소의 CSS 선택기에 직접 복사: 🎜🎜🎜🎜

现在我们能取得svg 中任意部分的CSS Selector,也知道怎么用GSAP API 来进行补间动画,现在是时候将其结合起来!

我们先调整下基本布局,一般在空白Html内直接放入svg时,图案大多会紧靠页面左上角,我们可以套用个margin: 0 auto将其置中,看起来会顺眼一些,你也能额外加些padding。我们在页面添加一个按钮来调用动画:

<!--html part-->
<button> Build! </button>
<!--css part-->
<style>
#Capa_1 {
  margin: 0 auto;
  display: block;
  width: 256px;
  height: 100%;
}
</style>

接着我们使用TimelineMax提供的staggerFrom函数,利用devtool将滑板车的轮子部分找出来,复制它们的CSS Selector,放入staggerFrom函数参数中,设定x与y轴的scale都从0开始,由center增长,采用Bounce.easeOut的ease function ,而四个Selector间以stagger: 0.2的属性值作为补间动画出现的时间差:

  const tl = new TimelineMax();
  tl.staggerFrom(
      [
        "#Capa_1 > g > path:nth-child(1)",
        "#Capa_1 > circle:nth-child(7)",
        "#Capa_1 > path:nth-child(6)",
        "#Capa_1 > circle:nth-child(5)"
      ],
      1,
      {
        scaleY: 0,
        scaleX: 0,
        transformOrigin: "center",
        ease: Bounce.easeOut,
        stagger: 0.2
      }
    )

简单几行代码,就能让我们的滑板车动起来!

演示地址:https://codepen.io/johnYu243/pen/poNjNzz

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

补间是一个术语,用于描述逐帧序列,有时也称为"中间"。 在那个地方,一个动作导致下一个动作产生一个流畅的动作。

完善动画

你可以把TimelineMax想像成时间轴,动画按指定顺序执行,而staggerFrom则可以同时让多个DOM元素以微小时间差的顺序启动,另外我们还可以设置一些Flag来指定要等到哪几个动画完成后,才接续其他动画。

最后,发挥自己的创意,使用各种API打出一套组合拳:

演示地址:https://codepen.io/johnYu243/pen/yLVYVey

svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!

结论

看到这里,跃跃欲试了吗?

总之,我自己觉得蛮有趣的,希望或多或少对读到这篇文章的人有点帮助。

最后给大家分享一个很酷的demo,来自我的文章封面

参考文章

GreenSock Animation Platform

How to Create Beautiful SVG Animations Easily

更多编程相关知识,请访问:编程教学!!

위 내용은 svg를 빠르게 사용하여 아름다운 애니메이션을 그려보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
HTML의 미래 : 웹 디자인의 진화 및 트렌드HTML의 미래 : 웹 디자인의 진화 및 트렌드Apr 17, 2025 am 12:12 AM

HTML의 미래는 무한한 가능성으로 가득합니다. 1) 새로운 기능과 표준에는 더 많은 의미 론적 태그와 WebComponents의 인기가 포함됩니다. 2) 웹 디자인 트렌드는 반응적이고 접근 가능한 디자인을 향해 계속 발전 할 것입니다. 3) 성능 최적화는 반응 형 이미지 로딩 및 게으른로드 기술을 통해 사용자 경험을 향상시킬 것입니다.

HTML vs. CSS vs. JavaScript : 비교 개요HTML vs. CSS vs. JavaScript : 비교 개요Apr 16, 2025 am 12:04 AM

웹 개발에서 HTML, CSS 및 JavaScript의 역할은 다음과 같습니다. HTML은 컨텐츠 구조를 담당하고 CSS는 스타일을 담당하며 JavaScript는 동적 동작을 담당합니다. 1. HTML은 태그를 통해 웹 페이지 구조와 컨텐츠를 정의하여 의미를 보장합니다. 2. CSS는 선택기와 속성을 통해 웹 페이지 스타일을 제어하여 아름답고 읽기 쉽게 만듭니다. 3. JavaScript는 스크립트를 통해 웹 페이지 동작을 제어하여 동적 및 대화식 기능을 달성합니다.

HTML : 프로그래밍 언어입니까 아니면 다른 것입니까?HTML : 프로그래밍 언어입니까 아니면 다른 것입니까?Apr 15, 2025 am 12:13 AM

Htmlisnotaprogramminglanguage; itisamarkuplanguage.1) htmlstructuresandformatswebcontentusingtags.2) itworksporstylingandjavaScriptOfforIncincivity, WebDevelopment 향상.

HTML : 웹 페이지 구조 구축HTML : 웹 페이지 구조 구축Apr 14, 2025 am 12:14 AM

HTML은 웹 페이지 구조를 구축하는 초석입니다. 1. HTML은 컨텐츠 구조와 의미론 및 사용 등을 정의합니다. 태그. 2. SEO 효과를 향상시키기 위해 시맨틱 마커 등을 제공합니다. 3. 태그를 통한 사용자 상호 작용을 실현하려면 형식 검증에주의를 기울이십시오. 4. 자바 스크립트와 결합하여 동적 효과를 달성하기 위해 고급 요소를 사용하십시오. 5. 일반적인 오류에는 탈수 된 레이블과 인용되지 않은 속성 값이 포함되며 검증 도구가 필요합니다. 6. 최적화 전략에는 HTTP 요청 감소, HTML 압축, 시맨틱 태그 사용 등이 포함됩니다.

텍스트에서 웹 사이트로 : HTML의 힘텍스트에서 웹 사이트로 : HTML의 힘Apr 13, 2025 am 12:07 AM

HTML은 웹 페이지를 작성하는 데 사용되는 언어로, 태그 및 속성을 통해 웹 페이지 구조 및 컨텐츠를 정의합니다. 1) HTML과 같은 태그를 통해 문서 구조를 구성합니다. 2) 브라우저는 HTML을 구문 분석하여 DOM을 빌드하고 웹 페이지를 렌더링합니다. 3) 멀티미디어 기능을 향상시키는 HTML5의 새로운 기능. 4) 일반적인 오류에는 탈수 된 레이블과 인용되지 않은 속성 값이 포함됩니다. 5) 최적화 제안에는 시맨틱 태그 사용 및 파일 크기 감소가 포함됩니다.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서HTML, CSS 및 JavaScript 이해 : 초보자 안내서Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

HTML의 역할 : 웹 컨텐츠 구조HTML의 역할 : 웹 컨텐츠 구조Apr 11, 2025 am 12:12 AM

HTML의 역할은 태그 및 속성을 통해 웹 페이지의 구조와 내용을 정의하는 것입니다. 1. HTML은 읽기 쉽고 이해하기 쉽게하는 태그를 통해 컨텐츠를 구성합니다. 2. 접근성 및 SEO와 같은 시맨틱 태그 등을 사용하십시오. 3. HTML 코드를 최적화하면 웹 페이지로드 속도 및 사용자 경험이 향상 될 수 있습니다.

HTML 및 코드 : 용어를 자세히 살펴 봅니다HTML 및 코드 : 용어를 자세히 살펴 봅니다Apr 10, 2025 am 09:28 AM

"Code"는 "Code"BroadlyIncludeLugageslikeJavaScriptandPyThonforFunctureS (htMlisAspecificTypeofCodeFocudecturecturingWebContent)

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구