소개
베지어 곡선은 먼저 아래로 가속하고 정지한 다음 튀어오를 때 점차적으로 감속하는 튀는 공의 복잡한 애니메이션 효과와 같은 많은 복잡한 효과를 생성할 수 있습니다.
베지어 곡선을 사용하기 위해 일반적으로 사용되는 두 가지 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

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🎜🎜
.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 이벤트가 트리거됩니다. 🎜🎜효과는 그림에 표시됩니다: 🎜🎜

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

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

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

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

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

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

"Code"는 "Code"BroadlyIncludeLugageslikeJavaScriptandPyThonforFunctureS (htMlisAspecificTypeofCodeFocudecturecturingWebContent)

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

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


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구
