css動(dòng)畫(huà)

css性能介紹

瀏覽器渲染步驟

  1. 根據(jù)HTML構(gòu)建HTML樹(shù)(DOM)止后,DOM含长,也就是文檔對(duì)象模型(Document Object Model诀豁,簡(jiǎn)稱(chēng)DOM)矾柜,是W3C組織推薦的處理可擴(kuò)展標(biāo)志語(yǔ)言的標(biāo)準(zhǔn)編程接口阱驾。在網(wǎng)頁(yè)上,組織頁(yè)面(或文檔)的對(duì)象被組織在一個(gè)樹(shù)形結(jié)構(gòu)中怪蔑,用來(lái)表示文檔中對(duì)象的標(biāo)準(zhǔn)模型就稱(chēng)為DOM里覆。
  2. 根據(jù)CSS構(gòu)建CSS樹(shù)(CSS DOM)
  3. 將兩棵樹(shù)合成一個(gè)渲染樹(shù)(render tree)
  4. 布局(layout)
    這里主要管文檔流,盒模型饮睬,通過(guò)計(jì)算他們的大小和位置從而確定布局
  5. 繪制(paint)
    畫(huà)出邊框顏色租谈,文字顏色等等
  6. 合成(compose)
    根據(jù)層疊關(guān)系展示畫(huà)面

渲染步驟的選取

  1. 不走4(layout)
    在用js進(jìn)行樣式的修改時(shí)候,由于有一些情況并不會(huì)改變其整體文檔流和盒模型的情況捆愁,瀏覽器為了節(jié)省性能會(huì)不走4
  2. 全走
  3. 不走45

具體的情況可以在這個(gè)網(wǎng)站csstriggers里寫(xiě)的非常清楚割去,不知道是如何渲染就查一下。csstriggers

  • TIPs:
    在js中一個(gè)個(gè)加樣式進(jìn)行修改比較麻煩昼丑,不如添加一個(gè)節(jié)點(diǎn)呻逆,比如我們命名為'red',通過(guò)div.classlist.add('red')進(jìn)行樣式的添加,這個(gè)'red'并不是紅色菩帝,而是一個(gè)名字咖城,節(jié)點(diǎn)里面可以添加多個(gè)樣式,比較方便呼奢。

CSS動(dòng)畫(huà)的優(yōu)化

可根據(jù)6個(gè)步驟進(jìn)行分別優(yōu)化宜雀,具體的都在這個(gè)文章里Google 寫(xiě)的文章

最為重要的優(yōu)化是

  • JS 優(yōu)化
    使用 requestAnimationFrame 代替 setTimeout 或 setInterval
  • CSS 優(yōu)化
    使用 will-change 或 translate

CSS動(dòng)畫(huà)介紹

transform

主要有4個(gè)常用的屬性

  1. translate
  • translateX(length-percentage)

  • translateY(length-percentage)

  • translateZ(length)且父容器 perspective* translate3d(x,y,z)

  • 代碼例子 演示
    Tips:

  1. 如果z方向移動(dòng)不設(shè)置視點(diǎn)位置,也就是perspective握础,不會(huì)有差別辐董,因?yàn)橐朁c(diǎn)就在表面正中心,你上下移動(dòng)根據(jù)透視原理沒(méi)有差別禀综。
  2. 可以縮寫(xiě)translate(length-percentage,length-percentage)
  3. 可以用translate(-50%,-50%)讓絕對(duì)定位元素的居中简烘,
    具體看案例
  4. scale
    常用寫(xiě)法

Tips:

  1. 用得較少,因?yàn)槿菀壮霈F(xiàn)模糊和變形
  2. rotate
    主要的常用寫(xiě)法
  • rotate([angle|zero])
  • rotateZ([angle|zero])
  • rotateX([angle|zero])
  • rotateY([angle|zero])
  • rotate3d 太復(fù)雜定枷,現(xiàn)在可以不學(xué)孤澎,一般用不到,除非你做 3d 開(kāi)發(fā)欠窒,那時(shí)候才用得到
  • 代碼例子 演示
    Tips:
  1. 一般用于 360 度旋轉(zhuǎn)制作 loading覆旭,或者一些按鈕的交互(鼠標(biāo)移到按鈕上就轉(zhuǎn)一圈)

  2. 用到時(shí)再搜索 rotate MDN 看文檔

  3. skew
    常用寫(xiě)法

  1. 用得較少
  2. 用到時(shí)再搜 skew MDN 文檔

transform 多重效果

組合使用

  1. transform:scale(0.5) translate(-100%,-100%)
  2. transform:scale(1.5) rotate(45deg)
  3. transform:none;取消所有。不寫(xiě)代碼也就是什么都沒(méi)有,其實(shí)沒(méi)必要寫(xiě)這個(gè)

transition

主要用來(lái)添加關(guān)鍵幀
transition:屬性名 時(shí)長(zhǎng) 過(guò)渡方式 延遲
eg.transition:left 200ms linear 3s
Tips:

  1. 可以用逗號(hào)分隔兩個(gè)不同屬性
    eg.transition:left 200ms,top 400ms
  2. 可以用 all 代表所有屬性
    eg. transition:all 200ms
  3. 時(shí)長(zhǎng)單位只有 s 和 ms
  4. 過(guò)渡方式有:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier|step-start|step-end|steps
    具體的在mdn里面查

不可transition的屬性

  1. display:none=>block不可過(guò)渡姐扮,一般改成 visibility:hidden=>visible(但是 visibility 永遠(yuǎn)是占位置的)
    display:none(不顯示對(duì)應(yīng)的元素絮供,在文檔布局不分配空間)
    visibility:hidden(不顯示對(duì)應(yīng)的元素,在文檔布局保留空間)
    簡(jiǎn)單來(lái)說(shuō)就是display:none直接沒(méi)了茶敏,visibility:hidden只是隱藏起來(lái),該占的位置還要占據(jù)
  2. background 顏色
  3. opacity 透明度缚俏,但不推薦惊搏,一般是0-1/1-0
    Tips:
  4. 如果一個(gè)屬性過(guò)渡出了 bug 就改成其他能過(guò)渡的屬性就好了
  5. 一般只有一次/二次動(dòng)畫(huà)效果
  6. 必須要有起始

animation

animation:時(shí)長(zhǎng)|過(guò)渡方式|延遲|次數(shù)|方向|填充模式|是否暫停|動(dòng)畫(huà)名;

  1. 時(shí)長(zhǎng):s 或者 ms
  2. 過(guò)渡方式:跟 transition 取值一樣忧换,如 linear
  3. 次數(shù):3 或者 2.4 或者 infinite(無(wú)限次)
  4. 方向:reverse|alternate|alternate-reverse
  5. 填充模式:none|forwards|backwards|both恬惯,一般 forwards 用得多
  6. 是否暫停:paused|running
    Tips:
  7. 以上所有屬性都有對(duì)應(yīng)的單獨(dú)屬性。如果只改一個(gè)就要單獨(dú)寫(xiě)亚茬,就不能用 animation 了

@keyframes

兩種寫(xiě)法

  1. from to
@keyframes slidein{
  from{
    transform:translateX(0%);
  }
  to{
    transform:translateX(100%);
  }
}
  1. 百分?jǐn)?shù)(這種寫(xiě)法更廣泛)
@keyframes identifier{
  0%{top:0;left:0;}
  30%{top:50px;}
  68%,72%{left:50px;}
  100%{top:100px;left:100%;}
}

不懂的就去mdn查一下酪耳,寫(xiě)的很清楚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刹缝,一起剝皮案震驚了整個(gè)濱河市碗暗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梢夯,老刑警劉巖言疗,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異颂砸,居然都是意外死亡噪奄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)人乓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)勤篮,“玉大人,你說(shuō)我怎么就攤上這事色罚∨龅蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵保屯,是天一觀的道長(zhǎng)手负。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姑尺,這世上最難降的妖魔是什么竟终? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮切蟋,結(jié)果婚禮上统捶,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好喘鸟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布匆绣。 她就那樣靜靜地躺著,像睡著了一般什黑。 火紅的嫁衣襯著肌膚如雪崎淳。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天愕把,我揣著相機(jī)與錄音拣凹,去河邊找鬼。 笑死恨豁,一個(gè)胖子當(dāng)著我的面吹牛嚣镜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橘蜜,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼菊匿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了计福?” 一聲冷哼從身側(cè)響起跌捆,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棒搜,沒(méi)想到半個(gè)月后疹蛉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡力麸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年可款,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片克蚂。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闺鲸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出埃叭,到底是詐尸還是另有隱情摸恍,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布赤屋,位于F島的核電站立镶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏类早。R本人自食惡果不足惜媚媒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涩僻。 院中可真熱鬧缭召,春花似錦栈顷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至搪哪,卻和暖如春靡努,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背噩死。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工颤难, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人已维。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像已日,于是被迫代替她去往敵國(guó)和親垛耳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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