這篇文章主要介紹使用less實(shí)現(xiàn)隨機(jī)下雪動(dòng)畫的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
在平魯?shù)鹊貐^(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè),平魯網(wǎng)站建設(shè)費(fèi)用合理。
冬天來了,設(shè)計(jì)師說搖搖樂的場(chǎng)景需要隨機(jī)下落的雪花動(dòng)畫,第一時(shí)間就想到的方法是canvas比較好,項(xiàng)目非常緊急,然而小程序?qū)anvas支持不夠友好,容易在項(xiàng)目中出現(xiàn)無法預(yù)估的兼容性問題 ,馬上又否定了這種想法,想了想用javascript來寫隨機(jī)動(dòng)畫成本又高。既不用canvas也不用javascript來實(shí)現(xiàn),最終決定使用css預(yù)處理器less來實(shí)現(xiàn)隨機(jī)雪花,less怎么可能實(shí)現(xiàn)隨機(jī)雪花?對(duì)于喜歡寫css的人來說,這非常有趣。
上圖的雪花效果還蠻炫酷吧,怎么實(shí)現(xiàn)呢?less因?yàn)橛幸韵碌?個(gè)特點(diǎn),可以嘗試使用它來實(shí)現(xiàn)我們的場(chǎng)景
1.遞歸調(diào)用
實(shí)際上less并沒有自帶類似javascript的for循環(huán)的功能,但less可以用過引導(dǎo)when來實(shí)現(xiàn)條件判斷,簡(jiǎn)單的方法也可以讓聰明的程序員簡(jiǎ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代碼,同時(shí)也要避免javascript表達(dá)式被less錯(cuò)誤的編譯,我們需要了解兩個(gè)點(diǎn)。
一些 LESS不認(rèn)識(shí)的專有語法,可以在字符串前加上一個(gè) ~,
JavaScript 表達(dá)式在less 文件中使用,可以通過反引號(hào)的方式使用
于是有了如下隨機(jī)位移、隨機(jī)時(shí)間、隨機(jī)大小的代碼
于是有了如下的Less代碼,具體怎么實(shí)現(xiàn)請(qǐng)留意詳細(xì)的代碼注釋
以下less代碼使用構(gòu)建后可生產(chǎn)一份隨機(jī)css固定雪花文件,決定了每一個(gè)雪花有不同的大小、水平位移、垂直位移、出場(chǎng)位置、出場(chǎng)時(shí)間,不同的雪花大小,不同的下落速度,用肉眼看到的雪花就像是隨機(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"; //動(dòng)畫運(yùn)行時(shí)間8~12秒,保證雪花有不同的移動(dòng)速度 animation: ~"snowani_@{n} `(-Math.random() * 4 + 8).toFixed(2)`s linear infinite"; //動(dòng)畫提前出場(chǎng)時(shí)間,也就是垂直方向上位移 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%{ //垂直方向上高度,保證雪花有不同的移動(dòng)速度 transform: ~"translateY(`Math.round(Math.random() * 200 + 1600)`px)"; } } .snow((@n - 1)); } .snow(60);//生成雪花的數(shù)量
把上面的雪花的代碼構(gòu)建后如下:
還有HTML,一行代碼的事情
在編輯器中安裝好emmet或webstorm開啟emmet后,輸入下面代碼按下ctrl+e快捷鍵即可生成60個(gè)不同命名的雪花標(biāo)簽
以上是使用less實(shí)現(xiàn)隨機(jī)下雪動(dòng)畫的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享題目:使用less實(shí)現(xiàn)隨機(jī)下雪動(dòng)畫的方法
文章URL:http://aaarwkj.com/article34/pjcgse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、面包屑導(dǎo)航、靜態(tài)網(wǎng)站、Google、網(wǎng)站排名、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)