使用less實(shí)現(xiàn)隨機(jī)下雪動畫的方法-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)公司是一家專業(yè)提供漠河企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站制作H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為漠河眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

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

使用less實(shí)現(xiàn)隨機(jī)下雪動畫的方法

上圖的雪花效果還蠻炫酷吧,怎么實(shí)現(xiàn)呢?less因?yàn)橛幸韵碌?個特點(diǎn),可以嘗試使用它來實(shí)現(xiàn)我們的場景

1.遞歸調(diào)用

實(shí)際上less并沒有自帶類似javascript的for循環(huán)的功能,但less可以用過引導(dǎo)when來實(shí)現(xiàn)條件判斷,簡單的方法也可以讓聰明的程序員簡單實(shí)現(xiàn)遞歸調(diào)用

.snow(@n) when (@n > 0) {
 fn()//生成雪花函數(shù)fn(
 .snow((@n - 1));//再次執(zhí)行函數(shù)fn() 
}
.snow(60);//執(zhí)行次數(shù)

2.避免編譯JavaScript 表達(dá)式

雪花需要生成的隨機(jī)數(shù),我們需要運(yùn)用javascript表達(dá)式嵌入到less代碼,同時也要避免javascript表達(dá)式被less錯誤的編譯,我們需要了解兩個點(diǎn)。

一些 LESS不認(rèn)識的專有語法,可以在字符串前加上一個 ~,

JavaScript 表達(dá)式在less 文件中使用,可以通過反引號的方式使用

于是有了如下隨機(jī)位移、隨機(jī)時間、隨機(jī)大小的代碼

于是有了如下的Less代碼,具體怎么實(shí)現(xiàn)請留意詳細(xì)的代碼注釋
以下less代碼使用構(gòu)建后可生產(chǎn)一份隨機(jī)css固定雪花文件,決定了每一個雪花有不同的大小、水平位移、垂直位移、出場位置、出場時間,不同的雪花大小,不同的下落速度,用肉眼看到的雪花就像是隨機(jī)的,可以在項(xiàng)目上線前嘗試多構(gòu)建幾次,得到一份均勻分布在窗口的隨機(jī)雪花。

* {
 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濾鏡來畫雪花
 }
}
//隨機(jī)雪花函數(shù)
.snow(@n) when (@n > 0) {
 .snow_@{n}{
 //水平方向上的位移
 left: ~"`Math.round(Math.random() * @{windowWidth})`px";
 //動畫運(yùn)行時間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{
  //雪花大小隨機(jī),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);//生成雪花的數(shù)量

把上面的雪花的代碼構(gòu)建后如下:

使用less實(shí)現(xiàn)隨機(jī)下雪動畫的方法

還有HTML,一行代碼的事情

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

使用less實(shí)現(xiàn)隨機(jī)下雪動畫的方法

以上是使用less實(shí)現(xiàn)隨機(jī)下雪動畫的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道!

分享題目:使用less實(shí)現(xiàn)隨機(jī)下雪動畫的方法-創(chuàng)新互聯(lián)
URL地址:http://m.kartarina.com/article10/ccgcdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化品牌網(wǎng)站設(shè)計網(wǎng)站設(shè)計自適應(yīng)網(wǎng)站虛擬主機(jī)靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
主站蜘蛛池模板: 久久伊人亚洲AV无码网站| 熟妇人妻中文字幕无码老熟妇| 亚洲日韩精品一区二区三区无码| 国产在线无码精品电影网| 亚洲av无码成h人动漫无遮挡| 亚洲AV综合色区无码一区爱AV| 亚洲中文无码永久免费| 中文字幕乱码人妻无码久久| 无码毛片AAA在线| 国产综合无码一区二区辣椒 | 免费人成无码大片在线观看| 日韩精品无码人成视频手机| 内射人妻无码色AV天堂| 亚洲爆乳无码一区二区三区| 国产精品无码久久av不卡| 无码精品黑人一区二区三区| 国产免费黄色无码视频| 国产精品无码久久四虎| 97性无码区免费| 精品人妻大屁股白浆无码| 亚洲日韩精品A∨片无码| 中文字幕无码免费久久9一区9| 无码VA在线观看| 西西444www无码大胆| 精品久久无码中文字幕| 亚洲av无码国产精品夜色午夜| 日韩精品无码一区二区三区四区| 精品国产AV无码一区二区三区| 亚洲AV无码片一区二区三区| 精品久久久久久久无码| 亚洲熟妇无码AV不卡在线播放 | 野花在线无码视频在线播放| 日韩无码系列综合区| 国产AV无码专区亚洲AV琪琪| 亚洲精品无码国产片| 人妻少妇精品无码专区漫画| 亚洲av永久无码嘿嘿嘿| 伊人无码精品久久一区二区| 亚洲av无码专区在线电影| 岛国av无码免费无禁网站| 久久AV无码精品人妻出轨|