冬天來了,設計師說搖搖樂的場景需要隨機下落的雪花動畫,第一時間就想到的方法是canvas比較好,項目非常緊急,然而小程序對canvas支持不夠友好,容易在項目中出現無法預估的相容性問題 ,馬上又否定了這個想法,想了想用javascript來寫隨機動畫成本又高。既不用canvas也不用javascript來實現,最後決定使用css預處理器less來實作隨機雪花,less怎麼可能實作隨機雪花?對於喜歡寫css的人來說,這非常有趣。 【推薦教學:CSS教學】
上圖的雪花效果還蠻酷吧,要怎麼實現呢? less因為有以下的2個特點,可以嘗試使用它來實現我們的場景
1.遞歸調用
實際上less並沒有自帶類似javascript的for循環的功能,但less可以用過引導when來實現條件判斷,簡單的方法也可以讓聰明的程式設計師簡單實作遞歸呼叫
.snow(@n) when (@n > 0) { fn()//生成雪花函数fn( .snow((@n - 1));//再次执行函数fn() } .snow(60);//执行次数
2.避免編譯JavaScript 表達式
雪花需要產生的隨機數,我們需要運用javascript表達式嵌入到less程式碼,同時也要避免javascript表達式被less錯誤的編譯,我們需要了解兩個點。
一些LESS不認識的專有語法,可以在字串前面加上一個~,
JavaScript 表達式在less 檔案中使用,可以透過反引號的方式使用
於是有瞭如下隨機位移、隨機時間、隨機大小的代碼
於是有瞭如下的Less代碼,具體怎麼實現請留意詳細的代碼註釋
以下less代碼使用構建後可生產一份隨機css固定雪花文件,決定了每一個雪花有不同的大小、水平位移、垂直位移、出場位置、出場時間,不同的雪花大小,不同的下落速度,用肉眼看到的雪花就像是隨機的,可以在專案上線前嘗試多建造幾次,得到一份均勻分佈在視窗的隨機雪花。
* { padding: 0; margin: 0; } html, body { height: 100%; } //浏览器窗口宽度 @windowWidth: 750; //雪花 .snow { &_wrap{ position: relative; width: ~"@{windowWidth}px"; height: 100%; overflow: hidden; background: rgba(14,99,69,1); margin: 0 auto; } //雪花初始化大小 position: absolute; width:20px; height: 20px; &:after{ content: ''; position: absolute; left:0; top:0; width:20px; height: 20px; background-color:#fff; opacity:1; border-radius: 100%; filter:blur(5px);//此处使用css3滤镜来画雪花 } } //随机雪花函数 .snow(@n) when (@n > 0) { .snow_@{n}{ //水平方向上的位移 left: ~"`Math.round(Math.random() * @{windowWidth})`px"; //动画运行时间8~12秒,保证雪花有不同的移动速度 animation: ~"snowani_@{n} `(-Math.random() * 4 + 8).toFixed(2)`s linear infinite"; //动画提前出场时间,也就是垂直方向上位移 animation-delay: ~"`(-Math.random() * 8 + 0.2).toFixed(2)`s"; &:after{ //雪花大小随机,0.5~1.2 transform: ~"scale(`(Math.random() * 0.7 + 0.5).toFixed(2)`)"; } } @keyframes ~"snowani_@{n}" { 0%{ transform: translateY(0); } 100%{ //垂直方向上高度,保证雪花有不同的移动速度 transform: ~"translateY(`Math.round(Math.random() * 200 + 1600)`px)"; } } .snow((@n - 1)); } .snow(60);//生成雪花的数量
把上面的雪花的程式碼建置後如下:
#還有HTML,一行程式碼的事情
在編輯器中安裝好emmet或webstorm開啟emmet後,輸入下面程式碼按下ctrl e快捷鍵即可產生60個不同命名的雪花標籤
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或工作有一定的參考學習價值,如果有疑問大家可以留言交流。
以上是如何使用less實現隨機下雪動畫詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能