準備好把你的網(wǎng)頁設(shè)計提升到一個新的水平了嗎?JavaScript 動畫庫是可以將靜態(tài)頁面轉(zhuǎn)換為動態(tài)、引人注目的體驗的秘密武器。無論您是經(jīng)驗豐富的開發(fā)人員還是剛剛起步的開發(fā)人員,這些庫都能提供強大的工具,將您的創(chuàng)意愿景變?yōu)楝F(xiàn)實。讓我們深入了解 12 年掀起波瀾的 2024 大 JavaScript 動畫庫!
GSAP就像動畫庫的瑞士軍刀。它堅固耐用、用途廣泛,深受全球?qū)I(yè)人士的喜愛。
例:
gsap.to(".box", {duration: 2, x: 300, rotation: 360, ease: "bounce"});
這個簡單的代碼使框元素向右移動 300 像素,同時旋轉(zhuǎn) 360 度,具有彈性效果。
Anime.js證明,有時候,少即是多。它的輕巧特性不會在功率上妥協(xié)。
例:
anime({
targets: '.circle',
translateX: 250,
scale: 2,
duration: 3000
});
此動畫在 3 秒內(nèi)平滑移動并放大圓形元素。
Velocity.js都是關(guān)于性能的,同時又不犧牲功能。這就像在你的動畫上綁上火箭一樣!
例:
$(".element").velocity({
translateY: "200px",
rotateZ: "45deg"
}, 1000);
此代碼將元素向下轉(zhuǎn)換 200 像素,并在一秒鐘內(nèi)將其旋轉(zhuǎn) 45 度。
Three.js開辟了一個全新的維度 - 從字面上看!它是您在瀏覽器中創(chuàng)建令人驚嘆的 3D 圖形的門戶。
例:
const geometry=new THREE.BoxGeometry();
const material=new THREE.MeshBasicMaterial({color: 0x00ff00});
const cube=new THREE.Mesh(geometry, material);
scene.add(cube);
此代碼段創(chuàng)建了一個簡單的綠色 3D 立方體,您可以對其進行操作和動畫制作。
Lottie 將復雜的動畫變成了小菜一碟。這就像你的口袋里有一個專業(yè)的動畫師!
例:
lottie.loadAnimation({
container: document.getElementById('lottie-container'),
renderer: 'svg',
loop: true,
autoplay: true,
path: 'data.json'
});
此代碼從 JSON 文件加載并播放 Lottie 動畫。
Popmotion就像一條變色龍 - 它可以輕松適應(yīng)任何JavaScript環(huán)境。
例:
animate({
from: 0,
to: 100,
onUpdate: latest=> console.log(latest)
});
這個簡單的動畫從 0 到 100 計數(shù),記錄每個值。
Mo.js使創(chuàng)建動態(tài)圖形就像用蠟筆繪圖一樣簡單,但結(jié)果卻更加壯觀!
例:
const burst=new mojs.Burst({
radius: { 0: 100 },
count: 5,
children: {
shape: 'circle',
fill: { 'cyan' : 'yellow' },
duration: 2000
}
});
此代碼創(chuàng)建一個連拍動畫,其中包含五個擴展和改變顏色的圓圈。
Typed.js為您的文本增添了人情味。這就像在您的網(wǎng)站上有一個幽靈打字員!
例:
new Typed('#element', {
strings: ['Hello, World!', 'Welcome to my website!'],
typeSpeed: 50
});
這將創(chuàng)建一個在兩個短語之間交替的鍵入動畫。
AniJS 就像魔術(shù)一樣 - 您無需編寫任何代碼即可創(chuàng)建動畫!
例:
<div data-anijs="if: click, do: fadeIn, to: .target"></div>
此 HTML 屬性在單擊時創(chuàng)建淡入動畫。
Framer、Motion 和 React 就像花生醬和果凍一樣搭配在一起。它是你的 React 工具包的完美補充。
例:
<motion.div
animate={{ x: 100 }}
transition={{ duration: 2 }}
/>
這個 React 組件在 2 秒內(nèi)向右移動 100 個像素。
ScrollMagic 將滾動變成一場冒險。這就像在用戶滾動瀏覽您的網(wǎng)站時創(chuàng)建一部迷你電影!
例:
new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 300
})
.setTween("#animate", {scale: 2.5})
.addTo(controller);
這將創(chuàng)建一個動畫,該動畫在用戶滾動時縮放元素。
Motion One 證明了好東西來自小包裝。它很輕,但很有沖擊力!
例:
animate("#box", { x: 100 }, { duration: 1 });
這條簡單的線在一秒鐘內(nèi)將一個盒子向右移動 100 像素。
你有這12 個令人驚嘆的 JavaScript 動畫庫,可以將您的 Web 項目從普通轉(zhuǎn)變?yōu)榉欠病o論您是創(chuàng)建簡單的懸停效果還是復雜的 3D 世界,這些庫都能滿足您的需求。
請記住,最適合您的庫取決于您的特定需求和項目要求。不要害怕嘗試不同的選項來找到您的完美匹配。
在之前的一篇文章《默認的input標簽太丑?教你如何使用CSS寫出帶動畫的樣式》中有講過如何實現(xiàn)一個漂亮的input標簽樣式。
既然已經(jīng)折騰了,今天這篇文章我們就繼續(xù)折騰,看看如何通過CSS3實現(xiàn)一個帶動畫的checkbox樣式?
CSS3
感興趣的可以自行去github上看源文件,地址如下:
https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html
checkbox作為多選框,在form表單中的使用頻率是非常高的,例如問卷調(diào)查的多選題,個人興趣愛好的選擇時都會用到多選框。
而瀏覽器默認的checkbox樣式都很丑,看起來就是一個小小的方框,雖然Bootstrap已經(jīng)有好看的checkbox樣式,但是它不支持動畫,在交互上仍然存在缺陷,所以我們就試圖自己寫出一個帶動畫的checkbox效果。
首先我們來看看checkbox的動態(tài)效果圖(中間的黑色圓圈實際為錄制GIF圖時產(chǎn)生的,請忽略)
checkbox效果圖
接下來我們具體分析下頁面的元素組成,主要包括以下部分。
默認的checkbox標簽,將其display設(shè)置為none,隱藏起來。
label標簽,表現(xiàn)為實際顯示的動態(tài)選中和未選中效果。
我們需要達到的效果是,在未選中checkbox時,默認為灰色的邊框,白色的背景;在選中checkbox時,改變背景色,出現(xiàn)白色的打勾動畫效果。
在這部分,我們來具體分析下頁面的代碼組成。
HTML
首先是頁面的HTML部分代碼,如上一部分所示,頁面其實只有兩個元素組成,這兩個元素放在一個容器下,故HTML代碼如下所示。
HTML部分代碼
CSS
我們來看看CSS部分的代碼,因為CSS部分代碼比較多,我們一一來分析。
首先是外層container的樣式,同時對頁面的html和body也做一些簡單處理,代碼如下所示。
container樣式
其次是checkbox標簽的樣式,因為原生的checkbox除了在傳輸數(shù)據(jù)時有用處,在頁面呈現(xiàn)上并沒有作用,故設(shè)置display:none;將其隱藏。
checkbox樣式
然后是最重要的label部分,在未點擊之前l(fā)abel呈現(xiàn)一個正方形,有基本的樣式。
基本樣式
在點擊方形框后,出現(xiàn)的對勾是通過偽元素::before和::after實現(xiàn)的,對勾實際為兩個矩形拼接而成,左側(cè)的矩形用::after元素表示,右側(cè)的矩形用::before元素表示。兩者的通用樣式通過如下代碼實現(xiàn)。
偽元素實現(xiàn)
然后是針對::before和::after所特有的樣式,因為兩者的位置和旋轉(zhuǎn)的角度不同,代碼也會出現(xiàn)差異。
特有樣式
然后是定義的打鉤的動畫效果,這里使用keyframes關(guān)鍵字定義,考慮到瀏覽器兼容性,定義的動畫具有不同的前綴。定義的動畫也包括兩部分,首先是右側(cè)的矩形動畫效果。
右側(cè)矩形動畫效果
然后是左側(cè)矩形的動畫效果,同樣考慮到瀏覽器的兼容性,樣式代碼如下。
左側(cè)矩形動畫
至此,所有代碼都已講解完畢,如果運行之后就會看到文章開始的動畫效果。
本篇文章主要講的是如何使用自定義的動畫完成checkbox效果,感興趣的可以直接去github上看源文件代碼,后續(xù)會寫一個跟開關(guān)switch有關(guān)的文章,敬請期待~
1.什么是CSS?
2.為什么使用CSS?
3.CSS作用
動畫的原理
定義
概念
瀏覽器渲染過程步驟
三棵樹
如何更新樣式
一般JS來更新樣式
三種更新方式
1.JS/CSS》樣式》布局》繪制》合成
全走
比如:div.remove()會觸發(fā)當前消失,其它元素relayout。
2.JS/CSS》樣式》繪制》合成
跳過Layout
比如:改變背景色,直接repaint+composite。
3.JS/CSS》樣式》合成
跳過Layout和Paint
比如:改變transform,直接composite。
CSS動畫優(yōu)化
一. transform
四個常用功能
經(jīng)驗:
transform: translate
經(jīng)驗:
#demo{
left:50%;
top:50%;
transform:translate(-50%,-50%);
}
transform: scale
經(jīng)驗:
transform: rotate
經(jīng)驗:
transform: skew
經(jīng)驗:
transform 可以組合使用
transition 過渡
作用
語法
并不是所有的屬性都能過度
二. animation
縮寫語法
使用animation
如何讓動畫停在最后一幀
@keyframes 完整語法
本文為作者本人的原創(chuàng)文章,著作權(quán)歸作者本人和饑人谷所有,轉(zhuǎn)載務(wù)必注明來源。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。