찾다
웹 프론트엔드HTML 튜토리얼베지어 곡선 적용에 대한 자세한 설명

소개

베지어 곡선은 먼저 아래로 가속하고 정지한 다음 튀어오를 때 점차적으로 감속하는 튀는 공의 복잡한 애니메이션 효과와 같은 많은 복잡한 효과를 생성할 수 있습니다.

베지어 곡선을 사용하기 위해 일반적으로 사용되는 두 가지 URL은 다음과 같습니다.

Easing 기능:

cubic-bezier:

베지어 곡선으로 곡선을 그리는 방법

표준 3차 베지어 곡선에는 4가 필요합니다. > 점: 시작점, 끝점(앵커점이라고도 함) 및 서로 분리된 두 개의 중간점. 4个点:起始点、终止点(也称锚点)以及两个相互分离的中间点。

无论SVG, Canvas还是CSS3动画,都牵扯到这4个点。

SVG和贝塞尔曲线的结合

svg可缩放矢量图形(Scalable Vector Graphics)、二维、XML标记,类似下面:

<svg>
  <path></path></svg>

SVG的代码不具体展开(说开了可以连载好几篇),提一下其中一个path的标签,可以绘制任意的路径,自然也包括和贝塞尔搞基。

三次贝塞尔曲线指令:C x1 y1, x2 y2, x y两个控制点(x1,y1)和(x2,y2)(x,y)代表曲线的终点。字母C表示特定动作与行为,这里需要大写,表示标准三次方贝塞尔曲线。

看看下面一些描述贝塞尔曲线的代码(片段),大家可以好好地感受下(其中字母M表示特定动作moveTo, 指将绘图的起点移动到此处)。

<svg>
  <path></path>
  <path></path>
  <path></path>
  <path></path>
  <path></path>
  <path></path>
  <path></path>
  <path></path>
  <path></path></svg>

曲线效果类似下面这张图:

可以看到M后面的起点,加C后面3个点,构成了贝赛尔曲线的4个点。

Canvas与贝塞尔曲线的结合

其中Canvas有个bezierCurveTo()方法,代码如下:

var c=document.getElementById("myCanvas");var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20,20);
ctx.bezierCurveTo(20,100,200,100,200,20);
ctx.stroke();

开始点:moveTo(20,20)
控制点 1:bezierCurveTo(20,100,200,100,200,20)
控制点 2:bezierCurveTo(20,100,200,100,200,20)
结束点:  bezierCurveTo(20,100,200,100,200,20)

CSS3动画与贝塞尔曲线的结合

用法如下:

transition:cubic-bezier(.25,.1,.25,1)

其中.25,.1这个坐标对于起点连接的那个锚点;.25,1这个坐标对于终点头上那根天线顶端那个点。

有人会疑问,CSS3动画那个cubic-bezier值好像只有两个点诶~~

那是因为CSS3动画贝塞尔曲线的起点和终点已经固定了,分别是(0,0)(1,1)

css3中常用的几个动画效果:

ease: cubic-bezier(0.25, 0.1, 0.25, 1.0)
linear: cubic-bezier(0.0, 0.0, 1.0, 1.0)
ease-in: cubic-bezier(0.42, 0, 1.0, 1.0)
ease-out: cubic-bezier(0, 0, 0.58, 1.0)
ease-in-out: cubic-bezier(0.42, 0, 0.58, 1.0)

实现一个弹球的效果:

html代码:

<div></div><div></div>

css代码:

body{margin:0;padding:0;}#ball{
  background:red;
  height:100px;
  width:100px;
  position:absolute;
  top:10px;
  left:20px;
  border-radius:50px;
}#floor{
  position:absolute;
  bottom:10px;
  left:0px;
  width:350px;
  height:1px;
  border-top:5px solid brown;
}

js代码:

;(function(){ 
  var down=false,
      trans='transition',
      eventName='transitionend';  if(typeof document.body.style.webkitTransition==='string'){
      trans='webkitTransition';
      eventName='webkitTransitionEnd';
   }else if(typeof document.body.style.MozTransition==='string'){
      trans='MozTransition';
    }var ball=document.getElementById('ball');var floor=document.getElementById('floor');function bounce(){     if(down){
         ball.style[trans]="Top 1s cubic-bezier(0,.27,.32,1)";
         ball.style.top='10px';
         down=false;
    }else{
        ball.style[trans]="Top 1s cubic-bezier(1,0,0.96,0.91)";
        ball.style.top=(floor.offsetTop-100)+'px';
        down=true;
    }
}

ball.addEventListener(eventName,bounce);
bounce();

})();

说明:document.body.style.webkitTransition获取以webkit为前缀的transition
在WebKit引擎的浏览器中,当css3的transition动画执行结束时,触发webkitTransitionEnd事件。

实现效果如图所示:

下载地址:《CSS3动画:小球弹跳动画》

总结

canvas:

ctx.moveTo(0,0);
ctx.bezierCurveTo(x1,y1,x2,y2,1,1);

SVG:

<path></path>

CSS3贝塞尔起点是0,0; 终点是1, 1

SVG, Canvas 또는 CSS3 애니메이션에 관계없이, 모두 이 4가지 사항을 포함합니다. 🎜🎜SVG와 베지어 곡선의 조합🎜🎜svg 확장 가능한 벡터 그래픽(Scalable Vector Graphics), 2차원, XML 태그, 다음과 유사: 🎜🎜
cubic-bezier(x1,y1, x2,y2)
🎜🎜SVG 코드는 특별히 확장되지 않습니다(확장 가능). 여러 번 연재됨) 장), 베지어로 기반을 만드는 것을 포함하여 자연스럽게 어떤 경로라도 그릴 수 있는 path 태그 중 하나를 언급하겠습니다. 🎜🎜3차 베지어 곡선 지침: C x1 y1, x2 y2, x y두 개의 제어점 (x1,y1) 및 (x2,y2) , (x,y)는 곡선의 끝점을 나타냅니다. 문자 C는 특정 작업 및 동작을 나타내며 여기서는 대문자로 표기해야 하며 표준 3차 베지어 곡선을 나타냅니다. 🎜🎜아래 베지어 곡선을 설명하는 일부 코드(조각)를 보면 이에 대한 좋은 느낌을 가질 수 있습니다. 문자 M은 특정 동작 moveTo를 나타냅니다. 그리기 시작점이 여기로 이동합니다.) 🎜🎜rrreee🎜🎜곡선 효과는 아래 그림과 유사합니다: 🎜🎜🎜🎜M 뒤의 시작점과 C 뒤의 세 지점이 베지어의 4 지점을 형성하는 것을 볼 수 있습니다. 곡선. 🎜🎜Canvas와 베지어 곡선의 조합🎜🎜Canvas에는 bezierCurveTo() 메서드가 있으며, 코드는 다음과 같습니다: 🎜🎜rrreee🎜🎜 🎜🎜Rreeee🎜🎜css3 애니메이션 및 베셀 곡선. >.25,.1이 좌표는 앵커 포인트에 대한 것입니다. 시작점에 연결됩니다. .25,1이 좌표는 끝점의 안테나 상단 지점에 대한 것입니다. 🎜🎜어떤 분들은 CSS3 애니메이션의 cubic-bezier 값이 2개의 점만 있는 것 같다고 궁금해하실 수도 있겠네요~~🎜🎜그건 CSS3 애니메이션의 베지어 곡선의 시작점과 끝점이 고정되어 있기 때문입니다 , (0,0)(1,1)입니다. 🎜🎜css3에서 일반적으로 사용되는 여러 애니메이션 효과: 🎜🎜ease: 큐빅-베지어(0.25, 0.1, 0.25, 1.0)
선형: 큐빅-베지어(0.0, 0.0, 1.0, 1.0)
ease - in: 입방 베지어(0.42, 0, 1.0, 1.0)
ease-out: 입방 베지어(0, 0, 0.58, 1.0)
ease-in-out: 입방 베지어(0.42 , 0, 0.58, 1.0)🎜🎜핀볼 효과 달성: 🎜🎜html 코드: 🎜🎜rrreee🎜🎜css 코드: 🎜🎜rrreee🎜🎜js 코드: 🎜🎜rrreee🎜🎜설명: document.body.style.webkitTransition은 webkit이라는 접두어가 붙은 전환을 가져옵니다.
WebKit 엔진의 브라우저에서 css3의 애니메이션이 종료되면 webkitTransitionEnd 이벤트가 트리거됩니다.
🎜🎜효과는 그림에 표시됩니다: 🎜🎜🎜🎜다운로드 주소: "CSS3 애니메이션: Ball Bounce Animation"🎜🎜Summary🎜🎜canvas: 🎜🎜rrreee🎜🎜SVG: 🎜🎜rrreee🎜🎜CSS3 베지어 시작점은 0,0; 끝점은 1, 1;🎜🎜rrreee🎜

위 내용은 베지어 곡선 적용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
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)

HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구Apr 09, 2025 am 12:12 AM

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임HTML, CSS 및 JavaScript의 역할 : 핵심 책임Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

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. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

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

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구