2019-05-23 CSS3過渡和動畫

過渡:就相當(dāng)于在點擊或者滑動等等動作時梳星,css進(jìn)行樣式改變的動畫汗侵。一個元素盒卸,它的屬性從一個值變化到另一個值饿序。

transition過渡

transition-property屬性

檢索或者設(shè)置對象中的參與過渡的屬性

transition-property: none | all | property;
transition-property:沒有屬性改變 |所有屬性改變(默認(rèn))| 元素屬性名;

transition-duration

檢索或設(shè)置對象過渡的持續(xù)時間(開始后執(zhí)行的時間)

transition-duration: time;

time:規(guī)定完成過渡效果需要花費的時間(以秒或毫秒計)
ps:transition-duration: 2s;

transition-timing-function

檢索或設(shè)置對象中過渡的動畫類型

transition-timing-function: ease | linear | ease-in | ease-out | ease-in-out |step-start | step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>);

參數(shù)解釋:
linear:線性過渡赔癌。等同于貝塞爾曲線(0.0, 0.0, 1.0, 1.0)
ease:平滑過渡卧惜。等同于貝塞爾曲線(0.25, 0.1, 0.25, 1.0)
ease-in:由慢到快攀痊。等同于貝塞爾曲線(0.42, 0, 1.0, 1.0)
ease-out:由快到慢岸霹。等同于貝塞爾曲線(0, 0, 0.58, 1.0)
ease-in-out:由慢到快再到慢躁锁。等同于貝塞爾曲線(0.42, 0, 0.58, 1.0)
step-start:等同于steps(1, start)
step-end:等同于steps(1, end)
steps(<integer>[, [ start | end ] ]?):接受兩個參數(shù)的步進(jìn)函數(shù)第一個參數(shù):必須為正整數(shù)纷铣,指定函數(shù)的步數(shù)第二個參數(shù):取值可是start或end,指定每一步的值發(fā)生變化的時間點第二個參數(shù):可選战转,默認(rèn)值為end

transition-delay

檢索或設(shè)置對象延遲過渡的時間(開始前等待的時間)

transition-delay: time;

time:指定秒或毫秒數(shù)之前要等待切換效果開始,默認(rèn)值0搜立;

transition屬性

復(fù)合屬性,檢索或設(shè)置對象變換時的過渡

transition: property duration timing-function delay;

順序不可替換槐秧。
一個小例子:
做一個鼠標(biāo)滑過塊時啄踊,然后塊順時針旋轉(zhuǎn)360°,變?yōu)樽陨淼膬杀?/p>

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        div{
            height: 50px;
            width: 100px;
            margin:  0 auto;
            background: yellow;
            transition: 2s;
        }
        div:hover{
            transform: rotate(180deg);
            width: 200px;
            height: 100px;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div></div>

</body>
</html>

動畫

利用到了人類視覺暫留的原理

animation

animation-name屬性

檢索或設(shè)置對象所應(yīng)用的動畫名稱

animation-name: keyframename| none;

keyframename:指定要綁定到選擇器的關(guān)鍵幀的名稱刁标;
none:指定有沒有動畫(可用于覆蓋從級聯(lián)的動畫)颠通。

animation-duration屬性

檢索或設(shè)置對象動畫的持續(xù)時間

animation-duration: time;
time是動畫執(zhí)行的時間

animation-timing-function屬性

檢索或設(shè)置對象動畫的過渡類型

animation-timing-function: ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>);

linear:線性過渡。等同于貝塞爾曲線(0.0, 0.0, 1.0, 1.0)
ease:平滑過渡膀懈。等同于貝塞爾曲線(0.25, 0.1, 0.25, 1.0)
ease-in:由慢到快顿锰。等同于貝塞爾曲線(0.42, 0, 1.0, 1.0)
ease-out:由快到慢。等同于貝塞爾曲線(0, 0, 0.58, 1.0)
ease-in-out:由慢到快再到慢吏砂。等同于貝塞爾曲線(0.42, 0, 0.58, 1.0)
step-start:等同于steps(1, start)step-end:等同于steps(1, end)
steps(<integer>[, [ start | end ] ]?):接受兩個參數(shù)的步進(jìn)函數(shù)撵儿。第一個參數(shù)必須為正整數(shù),指定函數(shù)的步數(shù)狐血。第二個參數(shù)取值可以是start或end淀歇,指定每一步的值發(fā)生變化的時間點。第二個參數(shù)是可選的匈织,默認(rèn)值為end浪默。
cubic-bezier(<number>, <number>, <number>, <number>):特定的貝塞爾曲線類型,4個數(shù)值需在[0, 1]區(qū)間內(nèi)

animation-delay屬性

檢索或設(shè)置對象動畫的延遲時間缀匕。

animation-delay: time;

可選纳决。定義動畫開始前等待的時間,以秒或毫秒計乡小。默認(rèn)值為0阔加。

animation-iteration-count屬性

檢索或設(shè)置對象動畫的循環(huán)次數(shù)。

animation-iteration-count: infinite | <number>;

<number>為數(shù)字满钟,其默認(rèn)值為“1”胜榔;infinite為無限次數(shù)循環(huán)胳喷。

例子:做一個轉(zhuǎn)圈圈的八卦陣

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Datalist</title>
</head>
<style type="text/css">
    div{
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        height: 400px;
        width: 400px;
        margin: auto;
        border-radius: 50%;
        border: 1px red solid;
        box-sizing: border-box;
        border-bottom: 200px red solid;
        animation: rotate 5s linear infinite;
    }
    @keyframes rotate{
         from {transform:rotate(0deg)}
         to {transform:rotate(360deg);}
        }
    div:before{
        content:'';
        display:block;
        position:absolute;
        width:200px;
        height:200px;
        border-radius:50%;
        left:0;
        top:50%;
        background-color:red;
        background-image:radial-gradient(#fff 10%,red 10%);
    }
    div:after{
        content:'';
        display:block;
        position:absolute;
        width:200px;
        height:200px;
        border-radius:50%;
        right: 0;
        top:50%;
        background-color:red;
        background-image:radial-gradient(red 10%,#fff 10%);
    }
</style>
<body>
    <div>
        
    </div>
</body>
</html>

animation-direction屬性

檢索或設(shè)置對象動畫在循環(huán)中是否反向運動。

animation-direction: normal | reverse | alternate | alternate-reverse | initial | inherit;

normal:正常方向夭织;
reverse:反方向運行吭露;
alternate:動畫先正常運行再反方向運行,并持續(xù)交替運行尊惰;(依賴于循環(huán))
alternate-reverse:動畫先反運行再正方向運行讲竿,并持續(xù)交替運行。(依賴于循環(huán))

animation-fill-mode屬性

規(guī)定當(dāng)動畫不播放時(當(dāng)動畫完成或當(dāng)動畫有延遲未開始播放時)弄屡,要應(yīng)用到元素的樣式题禀。

animation-fill-mode: none | forwards | backwards | both | initial | inherit;

none:默認(rèn)值。不設(shè)置對象動畫之外的狀態(tài)琢岩;
forwards:設(shè)置對象狀態(tài)為動畫結(jié)束時的狀態(tài)投剥;
backwards:設(shè)置對象狀態(tài)為動畫開始時的狀態(tài);
both:設(shè)置對象狀態(tài)為動畫結(jié)束或開始的狀態(tài)担孔。

animation-play-state屬性

指定動畫是否正在運行或已暫停江锨。

animation-play-state: paused | running;

paused:指定暫停動畫;
running:默認(rèn)值糕篇,指定正在運行的動畫啄育。

復(fù)合屬性

animation屬性復(fù)合屬性。

檢索或設(shè)置對象所應(yīng)用的動畫特效拌消。

animation: name duration timing-function delay iteration-count direction fill-mode play-state;

需注意:如果只有一個數(shù)字時挑豌,這個數(shù)字不管位置在哪里,它都代表周期時間墩崩;如果有兩個數(shù)字氓英,那么前面的數(shù)字時周期時間,后邊的數(shù)字是延時鹦筹;

name和duration是必不可少的

@keyframes

關(guān)鍵幀铝阐,可以指定任何順序排列來決定Animation動畫變化的關(guān)鍵位置。

@keyframes animationname{
    keyframes-selector 
    {
      css-styles;
    }
}

animationname:必寫項铐拐,定義animation的名稱徘键。
keyframes-selector:必寫項,動畫持續(xù)時間的百分比遍蟋,0-100%吹害、from (0%)、to (100%)
css-styles:必寫項虚青,一個或多個合法的CSS樣式 屬性

will-change

提前通知瀏覽器元素將要做什么動畫它呀,讓瀏覽器提前準(zhǔn)備合適的優(yōu)化設(shè)置。增強(qiáng)頁面渲染性能.

will-change: auto|scroll-position|contents|<custom-ident>|<animateable-feature>;

auto:此關(guān)鍵字表示沒有特定的意圖,適用于它通常所做的任何啟發(fā)式和優(yōu)化钟些。
scroll-position:表示將要改變元素的滾動位置烟号。
contents:表示將要改變元素的內(nèi)容。
<custom-ident>:明確指定將要改變的屬性與給定的名稱政恍。<animateable-feature>:可動畫的一些特征值,比如left达传、top篙耗、margin等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宪赶,一起剝皮案震驚了整個濱河市宗弯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搂妻,老刑警劉巖蒙保,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異欲主,居然都是意外死亡邓厕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門扁瓢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來详恼,“玉大人,你說我怎么就攤上這事引几∶粱ィ” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵伟桅,是天一觀的道長敞掘。 經(jīng)常有香客問我,道長楣铁,這世上最難降的妖魔是什么玖雁? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮民褂,結(jié)果婚禮上茄菊,老公的妹妹穿的比我還像新娘。我一直安慰自己赊堪,他們只是感情好面殖,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哭廉,像睡著了一般脊僚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天辽幌,我揣著相機(jī)與錄音增淹,去河邊找鬼。 笑死乌企,一個胖子當(dāng)著我的面吹牛虑润,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播加酵,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拳喻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猪腕?” 一聲冷哼從身側(cè)響起冗澈,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陋葡,沒想到半個月后亚亲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡腐缤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年捌归,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柴梆。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陨溅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绍在,到底是詐尸還是另有隱情门扇,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布偿渡,位于F島的核電站臼寄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏溜宽。R本人自食惡果不足惜吉拳,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望适揉。 院中可真熱鬧留攒,春花似錦、人聲如沸嫉嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪侮。三九已至拭宁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杰标。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工兵怯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腔剂。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓媒区,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掸犬。 傳聞我的和親對象是個殘疾皇子驻仅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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