最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Animate.css:如水般自然溫柔的 CSS 動效庫

2023-06-06 12:45 作者:寫代碼的寶哥  | 我要投稿

本文發(fā)布于 2023.05.30。


Animate.css 是一個純 CSS 動畫庫 ,需要配合 JS 才能自由地讓某些元素隨時動起來。

官網(wǎng):https://animate.style/


使用(直接 HTML 中添加)


在 html 文件中引入動畫庫樣式文件。



接著給我們希望運動地元素加上類名 animate__animated,并跟上任何動畫名稱(不要忘記 animate__ 前綴?。I鲜鑫覀兘o <h1> 增加了左右搖擺地效果。

注意,因為動畫會造成元素偶爾會離開視口范圍,導(dǎo)致出現(xiàn)滾動條,所以我們給父元素加了 overflow: hidden 避免這個問題,這也是通常做法。


JS 控制


為了實現(xiàn)更靈活的操作,我們就要借助 JS 了。


修改 HTML 結(jié)構(gòu):



我們最開始可能會這么寫:



這種是沒效果的!這是因為 .remove().add() 是同步代碼,代碼執(zhí)行完畢后開始 UI 渲染,對瀏覽器來說,元素 e 的類名前后并無變化,因此動畫不會生效。


不急,下面我們提供了三種讓動畫生效的方式。


三種讓動畫生效的方式


方式一:強制刷新



.remove() 后,訪問 e.offsetWidth 會觸發(fā)瀏覽器強制刷新;再設(shè)置 .add() 會在下一次繪制中生效,所以動畫會生效。


方式二:下一幀中刷新



.remove() 后,我們將 .add() 操作通過 requestAnimationFrame 回調(diào)方式放入下一幀中渲染。

方式三:通過 animationend 事件



這里不再需要每次動畫時,先移除動畫類名,而是在當(dāng)次動畫結(jié)束時移除。與前兩種實現(xiàn)方式區(qū)別在于,第三種方式會讓動畫完整結(jié)束,而前兩種會中斷當(dāng)次動畫、并重新開始新的動畫。

綜合來看,方式三更好一些。


封裝可復(fù)用方法


我們這里封裝一個 animateCSS()——方便復(fù)用——用來給某個特定元素指定動畫效果:



animateCSS() 接收選擇器字符串(CSS Selector)作為參數(shù),運動元素。這里有兩點需要注意:

  • 我們?yōu)樵靥砑邮录r .addEventListener 使用的是單次生效事件,這樣就不必做 .removeEventListener ?處理了。

  • animationend 事件中,我們使用了 event.stopPropagation() 阻止了事件向上冒泡。

animateCSS() 使用方式如下:



注意事項

  • 行內(nèi)元素不支持動畫。在對內(nèi)聯(lián)級元素進行動畫處理時,可以將元素設(shè)置為 display: inline-block

  • 大多數(shù) Animate.css 動畫將在屏幕上移動元素,并可能會在你的網(wǎng)頁產(chǎn)生滾動條。使用 overflow: hidden 屬性可以避免網(wǎng)頁被撐大出現(xiàn)滾動條的問題。


Animate.css:如水般自然溫柔的 CSS 動效庫的評論 (共 條)

分享到微博請遵守國家法律
南部县| 武宁县| 乌兰县| 巴东县| 三都| 菏泽市| 安多县| 明溪县| 延津县| 丹寨县| 遂宁市| 罗定市| 军事| 华安县| 锡林浩特市| 聂拉木县| 准格尔旗| 鱼台县| 德清县| 称多县| 开鲁县| 临沧市| 边坝县| 新竹市| 叙永县| 修武县| 湟源县| 拉萨市| 荥经县| 宁陕县| 景德镇市| 肥西县| 昌宁县| 公安县| 徐汇区| 凤城市| 江源县| 北安市| SHOW| 榕江县| 榆社县|