青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長(zhǎng)網(wǎng)

animation 動(dòng)畫

animation 動(dòng)畫

animation 是動(dòng)畫,而 transition 是過(guò)渡,它們用法很相似,但實(shí)際又不大相同,可以說(shuō) animation 是 transition 的升級(jí)版,它可以創(chuàng)建一個(gè)持續(xù)的自動(dòng)執(zhí)行動(dòng)畫。

1. 官方定義

animation 屬性是一個(gè)簡(jiǎn)寫屬性,它是下面屬性的縮寫:

animation-name
animation-duration
animation-timing-function
animation-delay
animation-iteration-count
animation-direction
animation-fill-mode

注意:請(qǐng)始終規(guī)定 animation-duration 屬性,否則時(shí)長(zhǎng)為 0,就不會(huì)播放動(dòng)畫了。

2. 解釋

animation 是幾個(gè)屬性值的縮寫,我們定義一個(gè)動(dòng)畫通常使用 animation 就足夠了,如果想單獨(dú)改變動(dòng)畫的某些屬性可以使用單獨(dú)的動(dòng)畫屬性去改變,構(gòu)成一個(gè)動(dòng)畫的最基本屬性需要 一個(gè)@keyframes 和 duration。

3. 語(yǔ)法

.demo{
    animation: name duration timing-function delay iteration-count direction;
}

屬性值說(shuō)明:

屬性描述
animation-name規(guī)定需要綁定到選擇器的 keyframe 名稱。
animation-duration規(guī)定完成動(dòng)畫所花費(fèi)的時(shí)間,以秒或毫秒計(jì)。
animation-timing-function規(guī)定動(dòng)畫的速度曲線。
animation-delay規(guī)定在動(dòng)畫開(kāi)始之前的延遲。以秒或毫秒計(jì)。
animation-iteration-count規(guī)定動(dòng)畫應(yīng)該播放的次數(shù)。 一個(gè)整數(shù)代表重復(fù)的次數(shù)或者 infinite 無(wú)限重復(fù)
animation-direction規(guī)定是否應(yīng)該輪流反向播放動(dòng)畫。

animation-direction 參數(shù)值詳解:

描述
normal默認(rèn)值。動(dòng)畫按正常播放。
reverse動(dòng)畫反向播放。
alternate動(dòng)畫在奇數(shù)次(1、3、5…)正向播放,在偶數(shù)次(2、4、6…)反向播放。
alternate-reverse動(dòng)畫在奇數(shù)次(1、3、5…)反向播放,在偶數(shù)次(2、4、6…)正向播放。
initial設(shè)置該屬性為它的默認(rèn)值。
inherit從父元素繼承該屬性。

animation-fill-mode 參數(shù)值詳解

描述
none默認(rèn)值。動(dòng)畫在動(dòng)畫執(zhí)行之前和之后不會(huì)應(yīng)用任何樣式到目標(biāo)元素。
forwards設(shè)置動(dòng)畫結(jié)束之后使用結(jié)束后的狀態(tài)作為樣式。
backwards在設(shè)置延遲之后 元素使用動(dòng)畫設(shè)置的開(kāi)始的狀態(tài)
both在設(shè)置動(dòng)畫延遲情況下,元素使用開(kāi)始的狀態(tài),并在整個(gè)動(dòng)畫結(jié)束之后使用結(jié)束之后的狀態(tài)。
initial設(shè)置該屬性為它的默認(rèn)值。
inherit從父元素繼承該屬性。

4. 兼容性

IEEdgeFirefoxChromeSafariOperaiosandroid
9+12+28+4+6.1+12.1+7+4.4

5. 實(shí)例

  1. 使用 from to 定義一個(gè)名字為 go 的 @keyframes 的動(dòng)畫。

 @keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ;
}

效果圖

編程之家

動(dòng)畫效果圖

說(shuō)明:這是最簡(jiǎn)單的動(dòng)畫創(chuàng)建方式,使用 @keyframes 命名一個(gè)叫做 go 的動(dòng)畫,再為這個(gè)動(dòng)畫加上一個(gè) 2s 的持續(xù)時(shí)間 ,構(gòu)成了最簡(jiǎn)單的動(dòng)畫,但是它只播放一次。

  1. 對(duì)上面的例子進(jìn)行改造,通過(guò)設(shè)置動(dòng)畫函數(shù),修改動(dòng)畫執(zhí)行的快慢。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in;/*這里增加了動(dòng)畫函數(shù)*/
}

效果圖

編程之家

通過(guò)設(shè)置動(dòng)畫函數(shù)修改動(dòng)畫執(zhí)行的快慢效果圖

說(shuō)明:通過(guò)在 animation 增加第 3 個(gè)參數(shù) animation-timing-function 動(dòng)畫函數(shù),它可以改變動(dòng)畫運(yùn)動(dòng)的速度曲線。

Tips:要注意的是,不管怎么改變動(dòng)畫的結(jié)束時(shí)間是不會(huì)變的。具體可以看 timing-function 的介紹。

  1. 繼續(xù)對(duì)上面例子增加一個(gè)延遲實(shí)現(xiàn) 3s 后在執(zhí)行動(dòng)畫。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s;/*這里增加了動(dòng)畫延遲時(shí)間 3 秒*/
}

效果圖

編程之家

延遲動(dòng)畫效果圖

說(shuō)明:動(dòng)畫延遲了 3 秒開(kāi)始再次執(zhí)行了。

  1. 增加 animation-iteration-count 屬性,改變動(dòng)畫的播放次數(shù)。

動(dòng)畫延遲 3s 開(kāi)始播放,播放 2 次結(jié)束。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s ;/*播放 2 次結(jié)束*/
}

效果圖

編程之家

多次播放動(dòng)畫效果圖

說(shuō)明:通過(guò)效果圖可以很清楚的看到了動(dòng)畫反復(fù)執(zhí)行了 2 次,值得注意的這個(gè) 3s 的延遲只針對(duì)第一次動(dòng)畫開(kāi)始前,在動(dòng)畫開(kāi)始之后重復(fù)循環(huán)的時(shí)候就不再起作用了。

動(dòng)畫延遲 3s 開(kāi)始播放,然后無(wú)限循環(huán)。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s infinite;/*無(wú)限次循環(huán)*/
}

效果圖

編程之家

無(wú)限循環(huán)效果圖

說(shuō)明:通過(guò) infinite 動(dòng)畫在經(jīng)過(guò) 3s 的延遲之后開(kāi)始無(wú)限的循環(huán)了。

  1. animation-direction 來(lái)改變動(dòng)畫在循環(huán)過(guò)程中是否反向。

延續(xù)上面的例子,我們發(fā)現(xiàn)動(dòng)畫每次循環(huán)都是從開(kāi)始的位置開(kāi)始循環(huán)的,下面通過(guò)添加 animation-direction 來(lái)改變動(dòng)畫在循環(huán)過(guò)程中是否反向。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s infinite reverse;/*動(dòng)畫反向播放*/
}

使用 alternate 屬性,讓動(dòng)畫在奇數(shù)時(shí)候正向播放,偶數(shù)時(shí)候反向播放。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s infinite alternate;
}

效果圖

編程之家

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes go{
            from{
                width:px;
            }
            to{
                width:px
            }
        }
        .demo{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s infinite;/*動(dòng)畫反向播放*/
        }
        .demo-1{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s infinite reverse;/*動(dòng)畫反向播放*/
        }
        .demo-2{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s infinite alternate;/*動(dòng)畫偶數(shù)反向播放*/
        }
    </style>
</head>
<body>
    <h2>正常播放順序</h2>
    <div class="demo"></div>
    <h2>反向播放順序</h2>
    <div class="demo-1"></div>
    <h2>奇數(shù)正向播放偶數(shù)次反向播放</h2>
    <div class="demo-2"></div>
</body>
</html>
  1. animation-fill-mode 設(shè)置動(dòng)畫的初始或結(jié)束狀態(tài)。

單次動(dòng)畫使用 forwards 設(shè)置動(dòng)畫結(jié)束之后使用結(jié)束后的狀態(tài)作為樣式。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s  forwards;
}

在設(shè)置延遲之后元素中使用 backwards 設(shè)置動(dòng)畫的開(kāi)始的樣式。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s  backwards;
}

效果圖

編程之家

效果圖
<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes go{
            from{
                width:px;
            }
            to{
                width:px
            }
        }
        .demo{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s ;/*動(dòng)畫反向播放*/
        }
        
        .demo-1{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s  forwards;
        }
        .demo-2{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s  backwards;
        }
    </style>
</head>
<body>
    <h2>正常動(dòng)畫</h2>
    <div class="demo"></div>
    <h2>設(shè)置 forwards</h2>
    <div class="demo-1"></div>
    <h2>設(shè)置 backwards 注意觀察開(kāi)始</h2>
    <div class="demo-2"></div>
</body>
</html>

說(shuō)明:在鼠標(biāo)刷新瀏覽器我們看到本應(yīng)該 100px 寬度的元素是以 200px 開(kāi)始的,當(dāng)動(dòng)畫結(jié)束之后,回到了 100px。

both 在設(shè)置動(dòng)畫延遲情況下,元素使用開(kāi)始的狀態(tài),并在整個(gè)動(dòng)畫結(jié)束之后使用結(jié)束之后的狀態(tài)。

@keyframes go{
    from{
        width:px;
    }
    to{
        width:px
    }
}
.demo{
    width:px;
    height:px;
    background: #000;
    animation:go s ease-in s  both;
}

效果圖

編程之家

設(shè)置動(dòng)畫開(kāi)始和結(jié)束狀態(tài)效果圖
<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes go{
            from{
                width:px;
            }
            to{
                width:px
            }
        }
        .demo{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s ;/*動(dòng)畫反向播放*/
        }
        .demo-3{
            width:px;
            height:px;
            background: #000;
            animation:go s ease-in s  both;
        }
    </style>
</head>
<body>
    <h2>正常動(dòng)畫</h2>
    <div class="demo"></div>
    <h2>設(shè)置 both 注意觀察開(kāi)始和結(jié)束</h2>
    <div class="demo-3"></div>
</body>
</html>

6. 經(jīng)驗(yàn)分享

  1. 當(dāng)動(dòng)畫造成頁(yè)面的卡頓,可以用下面這種方式嘗試解決:
    開(kāi)啟 GPU 加速,例如使用 transform:transition3d(0,0,0)。

  2. 有時(shí)候需要實(shí)現(xiàn)鼠標(biāo) hover 到元素上,會(huì)出現(xiàn)一個(gè)提示效果。如果使用 transition 過(guò)渡屬性發(fā)現(xiàn)總是不能實(shí)現(xiàn)這個(gè)效果,而 animation 是可以解決的:

<div class="demo">
    往事不要再提<span>人生已多風(fēng)雨</span>
</div>
.demo{
    cursor: pointer;
}
.demo>span{             
    display: none;  
}
.demo:hover>span{
    display: block;
    animation: shows s forwards;
}
@keyframes shows {
    from{
        opacity: ;
    }to{
        opacity: ;
    }
}

效果圖

編程之家

說(shuō)明: transition 不能實(shí)現(xiàn)(隱藏/顯示)之間的過(guò)渡效,原因是 diaplay:none 設(shè)置之后雖然元素在頁(yè)面中,但是這個(gè)標(biāo)簽不在瀏覽器的渲染進(jìn)程里面。如果這個(gè)元素屬性為 display:block 相當(dāng)于元素從新渲染出來(lái),這時(shí)里面的 opacity: 0 到 1 就不起作用了。所以這里使用 animation 正好可以彌補(bǔ)這個(gè)問(wèn)題。

7. 小結(jié)

  1. 盡量停止不可以見(jiàn)的動(dòng)畫,以減少卡頓。

  2. 盡量使用 transform 屬性完成動(dòng)畫內(nèi)部屬性的切換,因?yàn)樗鞘褂?GPU 計(jì)算的,也會(huì)提升動(dòng)畫的性能。

返回頂部
主站蜘蛛池模板: 文中字幕一区二区三区视频播放 | 国产精品96久久久久久AV不卡 | 男人J放进女人P全黄网站 | 国产午夜在线精品三级a午夜电影 | qvod免费电影 | 最新亚洲一区二区三区四区 | 麻豆一二三区果冻 | 亚洲精品一二三区区别在哪 | 别插我B嗯啊视频免费 | 久久欧洲AV无码精品色午夜麻豆 | 日日啪在线影院百度 | 成人天堂婷婷青青视频在线观看 | 亚洲精品电影天堂网 | 色99蜜臀AV无码 | 成年女人免费影院播放 | 在线看免费毛片 | 色WWW永久免费视频首页 | 第一福利视频网站在线 | 亚洲另类中文字幕 | 午夜色网站 | 日本漫画之无彩翼漫画 | FREE另类老女人 | 精品国产中文字幕在线视频 | 97人妻久久久精品系列A片 | 亚洲免费黄色片 | 棉袜足j吐奶视频 | 永久久久免费人妻精品 | 台湾18成人影院 | 免费精品国产人妻国语麻豆 | www.亚洲天堂 | 嘟嘟嘟WWW在线观看视频高清 | 久久99精品国产麻豆婷婷 | 98久久人妻少妇激情啪啪 | 四川老师边上网课边被啪视频 | 夜夜狂射影院欧美极品 | 岛国精品在线观看 | 成片免费观看视频在线网 | 国产色精品久久人妻99蜜桃麻豆 | 夜夜精品视频一区二区 | 久久久久久亚洲精品影院 | 色欲AV蜜臀AV在线观看麻豆 |