CSS動畫總結(jié)

七超营、CSS動畫

1、過渡

  • transition:過渡阅虫,通過過渡可以指定一個屬性發(fā)生變化時的切換方式演闭。通過過渡可以創(chuàng)建一些非常好的效果,提升用戶體驗颓帝。

  • transition-property: 指定要執(zhí)行過渡的屬性,多個屬性之間用 米碰,隔開。如果所有屬性都需要過渡购城,則使用all關(guān)鍵字吕座。大部分屬性都支持過渡,注意過渡時必須是從一個有效數(shù)值向另外一個有效數(shù)值進行過渡

  • transition-duration: 指定過渡效果的持續(xù)時間瘪板,時間單位 s 和 ms吴趴,1s=1000ms

  • transition-timing-function: 過渡時序函數(shù),指定過渡的執(zhí)行方式侮攀÷嘀Γ可選值:
    ease:默認(rèn)值,慢速開始兰英,先加速撇叁,再減速
    linear:勻速運動
    ease-in:加速運動
    ease-out:加速運動
    ease-in-out:先加速后減速
    cubic-bezier():貝賽爾曲線,指定時序函數(shù)箭昵,通過https://cubic-bezier.com可自動生成税朴。
    steps():分步執(zhí)行過渡效果,可以為其設(shè)置兩個值家制。
    第一個值為整數(shù)正林,表示步數(shù)
    第二個值
    start:在時間開始時執(zhí)行過渡
    end:在時間結(jié)束時執(zhí)行過渡

  • transition-delay:過渡效果的延遲,等待一段時間后再執(zhí)行過渡

注意:
使用transition可以同時設(shè)置過渡相關(guān)的所有屬性颤殴,只有一個要求觅廓,如果要寫延遲,則第一個時間表示過渡時間涵但,第二個時間表示延遲時間杈绸。

       .box1{
            width: 800px;  height: 800px;
            background-color: silver;
            overflow: hidden;
        }
        .box1 div{
            width: 100px;  height: 100px;
            margin-bottom: 100px;
            margin-left: 700px;
        }
        .box2{
            background-color: #bfa;
            transition: all 0.5s;
            transition-property: all;
            transition-duration: 2s;
            transition-timing-function: steps(3,end);
            transition-delay: 2s;
        }
        .box3{
            background-color: orange;
            transition-property: all;
            transition-duration: 2s;
        }
        .box1:hover div{
            margin-left: 0px;
        }
    <div class="box1">
        <div class="box2"></div>
        <div class="box3"></div>
    </div>
過渡.gif

2帖蔓、動畫

動畫和過渡類似,都是可以實現(xiàn)一些動態(tài)的效果瞳脓。不同的是過渡需要在某個屬性發(fā)生變化時才能觸發(fā)塑娇,動畫可以自動出發(fā)動態(tài)效果。設(shè)置動畫效果劫侧,必須使用@keyframes設(shè)置一個關(guān)鍵幀埋酬,關(guān)鍵幀設(shè)置了動畫執(zhí)行的每一個步驟

        @keyframes test{
            /* from表示動畫的開始位置 */
            from{
                margin: 0;
                background-color: darkkhaki;
            }
            /* to表示動畫的結(jié)束位置 */
            to{
                margin-left: 700px;
                background-color: darkorange;
            }
        }

可以為@keyframes添加斷點使得從from到to分為多個階段執(zhí)行

        @keyframes falling{
            from{
                margin-top: 0;
            }
            50%{
                margin-top: 100px;
            }
            75%{
                margin-top: 200px;
            }
            to{
                margin-top: 300px;
            }
        }
  • animation-name:要對當(dāng)前元素生效的關(guān)鍵幀的名字

  • animation-duration:動畫的執(zhí)行時間

  • 同樣可以為動畫設(shè)置延時和貝賽爾曲線

    animation-delay: 2s;
    animation-timing-function: steps();
    
  • animation-iteration-count:動畫執(zhí)行次數(shù),可選值:整數(shù)烧栋、infinite無限次

  • animation-direction:指定動畫運行的方向写妥,可選值:
    normal:默認(rèn)值,每次都從from到to運行
    reverse:每次從to到from運行
    alternate:從from向to運行审姓,重復(fù)執(zhí)行動畫反向執(zhí)行
    alternate-reverse:從to向from運行重復(fù)執(zhí)行動畫時反向執(zhí)行

  • animation-play-state:設(shè)置動畫的執(zhí)行狀態(tài)珍特,可選值:
    running默認(rèn)值,動畫執(zhí)行
    paused動畫暫停
    此屬性可結(jié)合hover一起使用

  • animation-fill-mode:動畫的填充模式魔吐,可選值:
    none默認(rèn)值扎筒,動畫執(zhí)行完畢元素回到原來的位置
    forwards動畫執(zhí)行完畢元素會停止在動畫結(jié)束的位置
    backwards動畫等待延時時,元素就處于開始狀態(tài)画畅,即滿足開始狀態(tài)的所有屬性
    both結(jié)合了forwards和backwards的屬性砸琅,即等待時處于開始狀態(tài),結(jié)束時停在結(jié)束位置

        .box1{
            width: 800px; height: 800px;
            background-color: darkgrey;
        }
        .box1 div{
            width: 100px; height: 100px;
            margin-bottom: 100px;
            margin-left: 0;
        }
        .box2{
            background-color: #bbffaa;
            animation-name: test;
            animation-duration: 2s;
            animation-delay: 2s;
            animation-iteration-count: 1;
            animation-direction: alternate;
            animation-play-state: running;
            animation-fill-mode: both;
        }
        @keyframes test{
            from{
                margin: 0;
                background-color: darkkhaki;
            }
            to{
                margin-left: 700px;
                background-color: darkorange;
            }
        }
    <div class="box1">
        <div class="box2">
        </div>
    </div>
動畫.gif

3轴踱、變形

變形是指通過css來改變元素的形狀或位置,不會影響到頁面的布局谚赎。使用transform用來設(shè)置元素的變形效果淫僻。

(1)平移

translateX()沿著x軸方向平移
translateY()沿著y軸反向平移
translateZ()沿著z軸反向平移

平移元素時
向上為負(fù)值,向下為正值
向左為負(fù)值壶唤,向右為正值
向前為正值雳灵,向后為負(fù)值

若寫百分?jǐn)?shù)表示相對于元素自身大小的百分比移動

.box4:hover{
  transform: translateY(-5px);
  box-shadow: 0 0 10px rgba(0, 0, 0, .3);
}
<div class="box4"></div>
變形.gif

z軸平移,調(diào)整元素在z軸的位置闸盔,正常情況是調(diào)整元素和人眼之間的距離悯辙。距離越大,元素離人越近迎吵。z軸平移屬于立體效果(近大遠(yuǎn)卸阕)默認(rèn)情況下網(wǎng)頁不支持透視,如果需要看見效果击费,必須要設(shè)置網(wǎng)頁的視距拢蛋。
使用perspective屬性來設(shè)置網(wǎng)頁的視距,一般設(shè)置為800px到1200px之間蔫巩。

        html{
            perspective: 800px;
        }
        body{
            height: 500px; width: 500px;
            margin: 0 auto; border: 1px solid red;
        }
        .box1{
            width: 200px; height: 200px;
            background-color: #bbffaa;
            margin: 150px auto;
            transition: 0.3s;
        }
        body:hover .box1{
            transform: translateZ(100px);
        }
<div class="box1"></div>
Z軸平移.gif
(2)旋轉(zhuǎn)

通過旋轉(zhuǎn)可以使元素沿著x谆棱,y快压,z軸旋轉(zhuǎn)指定的角度:rotateX()rotateY()垃瞧,rotateZ()
可選值:度數(shù):rotateX(45deg)蔫劣,圈數(shù):rotateY(.25turn)。

使用backface-visibility屬性來設(shè)置是否顯示元素背面个从±剐可選值:
visible默認(rèn)值,顯示背面
hidden不顯示背面

        html{
            perspective: 800px;
        }
        .box{
            width: 600px; height: 250px;
            margin: auto; border: 1px solid red;
        }
        .box1{
            width: 552px; height: 212px;
            background-image: url(./img/1.gif);
            margin: auto;
            transition: 1s;
        }
        .box:hover .box1{
            transform: translateZ(100px) rotateY(180deg);
            backface-visibility: visible;
        }
    <div class="box">
        <div class="box1"></div>
    </div>
旋轉(zhuǎn).gif
(3)縮放

變形原點默認(rèn)是中點信姓,也可以指定原點的位置

對元素進行縮放的函數(shù)
scaleX()水平方向縮放
scaleY()垂直方向縮放
scale()雙方向縮放

通過這個屬性可以為圖片設(shè)置鼠標(biāo)移入放大效果

        .box1{
            width: 100px;height: 100px;
            background-color: #bbffaa;
            margin: 100px auto;
            transition: 1s;
            transform-origin: 0 0;
        }
        .box1:hover{
            transform: scale(2);
        }
<div class="box1"></div>
縮放.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸵隧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子意推,更是在濱河造成了極大的恐慌豆瘫,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菊值,死亡現(xiàn)場離奇詭異外驱,居然都是意外死亡,警方通過查閱死者的電腦和手機腻窒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門昵宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人儿子,你說我怎么就攤上這事瓦哎。” “怎么了柔逼?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵蒋譬,是天一觀的道長。 經(jīng)常有香客問我愉适,道長犯助,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任维咸,我火速辦了婚禮剂买,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘癌蓖。我一直安慰自己瞬哼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布费坊。 她就那樣靜靜地躺著倒槐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪附井。 梳的紋絲不亂的頭發(fā)上讨越,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天两残,我揣著相機與錄音,去河邊找鬼把跨。 笑死人弓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的着逐。 我是一名探鬼主播崔赌,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耸别!你這毒婦竟也來了健芭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤秀姐,失蹤者是張志新(化名)和其女友劉穎慈迈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體省有,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡痒留,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蠢沿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伸头。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舷蟀,靈堂內(nèi)的尸體忽然破棺而出恤磷,到底是詐尸還是另有隱情,我是刑警寧澤雪侥,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布碗殷,位于F島的核電站,受9級特大地震影響速缨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜代乃,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一旬牲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搁吓,春花似錦原茅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至摩骨,卻和暖如春通贞,著一層夾襖步出監(jiān)牢的瞬間朗若,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工昌罩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哭懈,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓茎用,卻偏偏與公主長得像遣总,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子轨功,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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