scss/sass實(shí)現(xiàn)列表順序加載動畫

效果展示

本文會講述如何使用scss/sass在微信小程序中實(shí)現(xiàn)列表順序加載的動畫收厨。

所用的css特性

CSS animations

CSS animations 使得可以將從一個CSS樣式配置轉(zhuǎn)換到另一個CSS樣式配置徽诲。動畫包括兩個部分:描述動畫的樣式規(guī)則和用于指定動畫開始、結(jié)束以及中間點(diǎn)樣式的關(guān)鍵幀。

相較于傳統(tǒng)的腳本實(shí)現(xiàn)動畫技術(shù),使用CSS動畫有三個主要優(yōu)點(diǎn):

  1. 能夠非常容易地創(chuàng)建簡單動畫,你甚至不需要了解JavaScript就能創(chuàng)建動畫拾酝。
  2. 動畫運(yùn)行效果良好,甚至在低性能的系統(tǒng)上卡者。渲染引擎會使用跳幀或者其他技術(shù)以保證動畫表現(xiàn)盡可能的流暢蒿囤。而使用JavaScript實(shí)現(xiàn)的動畫通常表現(xiàn)不佳(除非經(jīng)過很好的設(shè)計)。
  3. 讓瀏覽器控制動畫序列崇决,允許瀏覽器優(yōu)化性能和效果材诽,如降低位于隱藏選項(xiàng)卡中的動畫更新頻率。

css animations的屬性和子屬性見https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Animations/Using_CSS_animations#%E9%85%8D%E7%BD%AE%E5%8A%A8%E7%94%BB

可主要分為兩大部分恒傻,動畫的實(shí)現(xiàn)形式和動畫的屬性規(guī)則脸侥。

以下僅列出本文所用的屬性。

animation-timing-function

animation-timing-function 規(guī)定動畫的速度曲線碌冶。

animation-delay

顧名思義湿痢,設(shè)置動畫的持續(xù)時間,單位秒

animation-fill-mode

animation-fill-mode 屬性規(guī)定動畫在播放之前或之后扑庞,其動畫效果是否可見譬重。

使用keyframes定義動畫序列

keyframes就是一個描述關(guān)鍵幀的屬性,通過使用@keyframes建立兩個或兩個以上關(guān)鍵幀來實(shí)現(xiàn)罐氨。每一個關(guān)鍵幀都描述了動畫元素在給定的時間點(diǎn)上應(yīng)該如何渲染臀规。

因?yàn)閯赢嫷臅r間設(shè)置是通過CSS樣式定義的,關(guān)鍵幀使用percentage來指定動畫發(fā)生的時間點(diǎn)栅隐。0%表示動畫的第一時刻塔嬉,100%表示動畫的最終時刻。因?yàn)檫@兩個時間點(diǎn)十分重要租悄,所以還有特殊的別名:from和to谨究。這兩個都是可選的,若from/0%或to/100%未指定泣棋,則瀏覽器使用計算值開始或結(jié)束動畫胶哲。

示例

@keyframes list {
        0% {
            transform: scale(0);
        }

        100% {
            transform: scale(1);
        }
    }

如上代碼所示,定義了一個@keyframe名字叫l(wèi)ist潭辈,在動畫開始時使用縮放0%鸯屿,結(jié)束時縮放100%。那么它在整個動畫的過程中把敢,便會根據(jù)瀏覽器的性能展示一個從0%-100%漸變的動畫寄摆。是不是根據(jù)有點(diǎn)意思?當(dāng)然修赞,你也可包含設(shè)置任何額外可選的關(guān)鍵幀婶恼,描述動畫開始和結(jié)束之間的狀態(tài),比如45%。

至此我們已經(jīng)實(shí)現(xiàn)了組件顯示時逐漸放大的效果

所用的scss特性

以下為簡介勾邦,詳細(xì)內(nèi)容請轉(zhuǎn)至官方文檔

嵌套規(guī)則 (Nested Rules)

scss/Sass允許將一個 CSS 樣式嵌套進(jìn)另一個樣式中联逻,內(nèi)層樣式僅適用于外層樣式的選擇器范圍內(nèi)。

引用父選擇器:&

你可以 & 字符來明確地表示插入指定父選擇器检痰。

變量: (Variables:

以美元符開頭,可當(dāng)變量使用锨推。

@mixin混入指令 (Mixin Directives)

混入(mixin)允許您定義可以在整個樣式表中重復(fù)使用的樣式铅歼,而避免了使用無語意的類(class),比如 .float-left换可∽狄混入(mixin)還可以包含所有的CSS規(guī)則,以及任何其他在Sass文檔中被允許使用的東西沾鳄。
他們甚至可以帶arguments慨飘,引入變量,只需少量的混入(mixin)代碼就能輸出多樣化的樣式译荞。

插值:#{}(Interpolation: #{})

你可以通過 #{} 插值語法在選擇器和屬性名中使用 SassScript 變量:

@for

顧名思義瓤的,循環(huán),要留意一下tothrough的區(qū)別

引用混合樣式:@include (Including a Mixin: @include)

實(shí)現(xiàn)方式

wxml文件

<view class="list__item">
<view>...</view>
</view>

編譯前的scss/sass

    .list {
        &__item {
            animation: list 1s ease both;
        }
    }

    @keyframes list {
        0% {
            transform: scale(0);
        }

        100% {
            transform: scale(1);
        }
    }

    @mixin item($num) {
        $waitTime: ($num)*0.2;
        animation-delay: #{$waitTime}s;
    }

    @for $i from 1 through 7 {
        .list__item:nth-child(#{$i}) {
            @include item($i);
        }
    }

編譯后的css

.list__item {
  -webkit-animation: list 1s ease both;
          animation: list 1s ease both;
}
@-webkit-keyframes list {
0% {
    -webkit-transform: scale(0);
            transform: scale(0);
}
100% {
    -webkit-transform: scale(1);
            transform: scale(1);
}
}
@keyframes list {
0% {
    -webkit-transform: scale(0);
            transform: scale(0);
}
100% {
    -webkit-transform: scale(1);
            transform: scale(1);
}
}
.list__item:nth-child(1) {
  -webkit-animation-delay: 0.2s;
          animation-delay: 0.2s;
}
.list__item:nth-child(2) {
  -webkit-animation-delay: 0.4s;
          animation-delay: 0.4s;
}
.list__item:nth-child(3) {
  -webkit-animation-delay: 0.6s;
          animation-delay: 0.6s;
}
.list__item:nth-child(4) {
  -webkit-animation-delay: 0.8s;
          animation-delay: 0.8s;
}
.list__item:nth-child(5) {
  -webkit-animation-delay: 1s;
          animation-delay: 1s;
}
.list__item:nth-child(6) {
  -webkit-animation-delay: 1.2s;
          animation-delay: 1.2s;
}
.list__item:nth-child(7) {
  -webkit-animation-delay: 1.4s;
          animation-delay: 1.4s;
}
效果展示

參考資料

使用CSS動畫
CSS3 animation-timing-function 屬性
sass中文文檔

本文由 指尖魔法屋 首發(fā)吞歼,轉(zhuǎn)載必須申明原指尖魔法屋來源及源地址圈膏! 聯(lián)系我請轉(zhuǎn)至指尖魔法屋!聯(lián)系我請轉(zhuǎn)至指尖魔法屋篙骡!聯(lián)系我請轉(zhuǎn)至指尖魔法屋稽坤!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糯俗,隨后出現(xiàn)的幾起案子尿褪,更是在濱河造成了極大的恐慌,老刑警劉巖得湘,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杖玲,死亡現(xiàn)場離奇詭異,居然都是意外死亡忽刽,警方通過查閱死者的電腦和手機(jī)天揖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跪帝,“玉大人今膊,你說我怎么就攤上這事∩〗#” “怎么了斑唬?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我恕刘,道長缤谎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任褐着,我火速辦了婚禮坷澡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘含蓉。我一直安慰自己频敛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布馅扣。 她就那樣靜靜地躺著斟赚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪差油。 梳的紋絲不亂的頭發(fā)上顾稀,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天端三,我揣著相機(jī)與錄音,去河邊找鬼。 笑死辐宾,一個胖子當(dāng)著我的面吹牛沈条,可吹牛的內(nèi)容都是我干的梳杏。 我是一名探鬼主播容贝,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼楼眷!你這毒婦竟也來了铲汪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罐柳,失蹤者是張志新(化名)和其女友劉穎掌腰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體张吉,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡齿梁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肮蛹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勺择。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伦忠,靈堂內(nèi)的尸體忽然破棺而出省核,到底是詐尸還是另有隱情,我是刑警寧澤昆码,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布气忠,位于F島的核電站邻储,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旧噪。R本人自食惡果不足惜吨娜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淘钟。 院中可真熱鬧宦赠,春花似錦、人聲如沸米母。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爱咬。三九已至,卻和暖如春绊起,著一層夾襖步出監(jiān)牢的瞬間精拟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工虱歪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜂绎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓笋鄙,卻偏偏與公主長得像师枣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子萧落,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容