中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用less實現隨機下雪動畫的方法

發布時間:2020-08-27 14:20:56 來源:億速云 閱讀:169 作者:小新 欄目:web開發

這篇文章主要介紹使用less實現隨機下雪動畫的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

冬天來了,設計師說搖搖樂的場景需要隨機下落的雪花動畫,第一時間就想到的方法是canvas比較好,項目非常緊急,然而小程序對canvas支持不夠友好,容易在項目中出現無法預估的兼容性問題 ,馬上又否定了這種想法,想了想用javascript來寫隨機動畫成本又高。既不用canvas也不用javascript來實現,最終決定使用css預處理器less來實現隨機雪花,less怎么可能實現隨機雪花?對于喜歡寫css的人來說,這非常有趣。

使用less實現隨機下雪動畫的方法

上圖的雪花效果還蠻炫酷吧,怎么實現呢?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);//生成雪花的數量

把上面的雪花的代碼構建后如下:

使用less實現隨機下雪動畫的方法

還有HTML,一行代碼的事情

在編輯器中安裝好emmet或webstorm開啟emmet后,輸入下面代碼按下ctrl+e快捷鍵即可生成60個不同命名的雪花標簽

使用less實現隨機下雪動畫的方法

以上是使用less實現隨機下雪動畫的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秀山| 齐齐哈尔市| 鲜城| 肥东县| 开原市| 顺义区| 永城市| 嘉义市| 阿城市| 尚义县| 巧家县| 大宁县| 青海省| 同江市| 桐城市| 德令哈市| 泸定县| 巨鹿县| 东乌珠穆沁旗| 邳州市| 浮梁县| 南京市| 宣化县| 安新县| 桑日县| 文水县| 祁东县| 漠河县| 齐河县| 蓝田县| 怀化市| 密云县| 清水河县| 封丘县| 托里县| 太康县| 桐庐县| 措美县| 广宁县| 拉孜县| 岫岩|