簡介
貝塞爾曲線是可以做出很多複雜的效果來的,例如彈跳球的複雜動畫效果,首先加速下降,停止,然後彈起時逐漸減速的效果。
使用貝塞爾曲線常用的兩個網址如下:
緩動函數:
cubic-bezier:
如何用貝茲曲線畫曲線
一個標準的3次貝塞爾曲線需要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)
以上是貝塞爾曲線的應用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

要構建一個功能強大且用戶體驗良好的網站,僅靠HTML是不夠的,還需要以下技術:JavaScript賦予網頁動態和交互性,通過操作DOM實現實時變化。 CSS負責網頁的樣式和佈局,提升美觀度和用戶體驗。現代框架和庫如React、Vue.js和Angular,提高開發效率和代碼組織結構。

布爾屬性是HTML中的特殊屬性,不需要值即可激活。 1.布爾屬性通過存在與否控制元素行為,如disabled禁用輸入框。 2.它們的工作原理是瀏覽器解析時根據屬性的存在改變元素行為。 3.基本用法是直接添加屬性,高級用法可通過JavaScript動態控制。 4.常見錯誤是誤以為需要設置值,正確寫法應簡潔。 5.最佳實踐是保持代碼簡潔,合理使用布爾屬性以優化網頁性能和用戶體驗。

HTML代碼可以通過在線驗證器、集成工具和自動化流程來確保其清潔度。 1)使用W3CMarkupValidationService在線驗證HTML代碼。 2)在VisualStudioCode中安裝並配置HTMLHint擴展進行實時驗證。 3)利用HTMLTidy在構建流程中自動驗證和清理HTML文件。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTML的功能是定義網頁的結構和內容,其目的在於提供一種標準化的方式來展示信息。 1)HTML通過標籤和屬性組織網頁的各個部分,如標題和段落。 2)它支持內容與表現分離,提升維護效率。 3)HTML具有可擴展性,允許自定義標籤增強SEO。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具