您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用CSS steps()函數(shù)實(shí)現(xiàn)隨機(jī)翻牌效果”,在日常操作中,相信很多人在怎么用CSS steps()函數(shù)實(shí)現(xiàn)隨機(jī)翻牌效果問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么用CSS steps()函數(shù)實(shí)現(xiàn)隨機(jī)翻牌效果”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
翻牌是大家很熟悉的一個(gè)互動(dòng)效果,通常在抽獎(jiǎng)活動(dòng)中出現(xiàn)。那么不借助 JavaScript 是否能夠?qū)崿F(xiàn)隨機(jī)翻牌效果?翻牌效果肯定是沒(méi)有問(wèn)題,CSS 沒(méi)有隨機(jī)函數(shù),今天就來(lái)分享一個(gè)另類的交互實(shí)現(xiàn)思路。
CSS
沒(méi)有內(nèi)置的“隨機(jī)”函數(shù),沒(méi)有像Javascript
中的Math.random()
函數(shù),也根本無(wú)法生成隨機(jī)數(shù)或隨機(jī)顏色。
基于上面的問(wèn)題,需要轉(zhuǎn)換思路,讓元素通過(guò)復(fù)雜的動(dòng)畫實(shí)現(xiàn)出隨機(jī)的效果。實(shí)現(xiàn)的原理讓紙牌快速地呈現(xiàn)出不同的狀態(tài),讓這些紙牌在1秒內(nèi)循環(huán)通過(guò)所有52
個(gè)狀態(tài),用戶點(diǎn)擊每張紙牌就暫停動(dòng)畫,并讓紙牌翻轉(zhuǎn)。
在線預(yù)覽:https://codepen.io/quintiontang/pen/OJmJRrV
此方案不足的地方就是無(wú)法避免三張牌出現(xiàn)相同的花色和牌面
使用動(dòng)畫使元素看起來(lái)隨機(jī)行為的這個(gè)思路是不很有趣,有點(diǎn)出乎意料,大部分用戶看到這個(gè)效果肯定意識(shí)不到時(shí)純 CSS
實(shí)現(xiàn)的。
現(xiàn)在 CSS
遠(yuǎn)不止我們現(xiàn)在看到的,它能夠帶來(lái)什么取決于創(chuàng)造性,我一直堅(jiān)信沒(méi)有實(shí)現(xiàn)不了的交互,只有想不到的交互。
效果主要用到 CSS 中的動(dòng)畫屬性 animation
,自定義一個(gè)動(dòng)畫過(guò)程 randomAnim
,點(diǎn)擊通過(guò)經(jīng)典的 input checkbox + label
組合,動(dòng)畫控制器 animation-play-state: paused
和 animation-play-state: running;
,下面是關(guān)鍵的steps()
。
steps()
是一個(gè)階躍函數(shù)(timing-function
),允許將動(dòng)畫或者過(guò)渡效果分割成段,而不是從一種狀態(tài)持續(xù)到另一種狀態(tài)的過(guò)渡。這個(gè)函數(shù)有兩個(gè)參數(shù):
第一個(gè)參數(shù)是一個(gè)正值,指定我希望動(dòng)畫分割的段數(shù)。
第二個(gè)參數(shù)是可選的,可設(shè)值:start
和 end
,表示在每個(gè)間隔的起點(diǎn)或是終點(diǎn)發(fā)生階躍變化,默認(rèn)是 end
。例如 steps(1,start)
,動(dòng)畫分成1步,動(dòng)畫執(zhí)行時(shí)為左側(cè)端點(diǎn)的部分為開(kāi)始;steps(1,end)
,動(dòng)畫分成1步,動(dòng)畫執(zhí)行時(shí)為右側(cè)結(jié)尾端點(diǎn)的部分為開(kāi)始。
階躍函數(shù)(
timing-function
)是用于每?jī)蓚€(gè)關(guān)鍵幀之間,而不是整個(gè)動(dòng)畫。
到此,關(guān)于“怎么用CSS steps()函數(shù)實(shí)現(xiàn)隨機(jī)翻牌效果”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。