搜尋
首頁web前端css教學關於CSS3中動畫屬性transform和transition以及animation屬性的區別分析

關於CSS3中動畫屬性transform和transition以及animation屬性的區別分析

Jun 26, 2018 pm 02:48 PM
animationcss3transformtransition動畫

這篇文章主要介紹了關於CSS3中動畫屬性transform和transition以及animation屬性的區別分析,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

最近在專案中用到了CSS3中的動畫屬性。無奈對於css3幾個新加的屬性不太熟悉,常常容易搞混。所以從網站研究了點資料,總結一下,方便有需要的朋友可以參考學習。

Transform
在部分的test case當中,每個示範transform屬性的,看起來好像都是帶動畫。這使得小部分直覺化思考的人(包括我)認為transform屬性是動畫屬性。而相反,transform屬性是靜態屬性,一旦寫到style裡面,就會直接顯示作用,沒有任何變化過程。 transform的主要用途是用來做元素的特殊變形,對於做設計的人來說並不是很陌生,簡單的來說就是css 的圖形變形工具。

關於圖形變形的基礎條件當中的原點設定,在css裡面使用的是transform-origin來定義的。這個定義的原點應該是該css作用的元素的左上角為0,0來計算的(有待研究)。其他的屬性則是根據這個屬性來計算計算。

關於圖形變化的模式,css3標準當中transform-style來定義。預設是flat,展現出來的是簡單的效果。而preserve-3d則將空間呈現為3d模式。從正常的思維來說,應該只需要preserve-3d就好了,但是從謠傳「開啟了perserve-3d就使用了GPU加速」來說,這個屬性可能是為了降低系統消耗用的,畢竟3d比2d要多一個維度的計算。

如果需要使用3d模式,必須先指定style為3d,並在任意父元素上增加 perspective及 perspective-origin 來指定透視點。

特定的給設計師改變元素樣式用的屬性則有以下五個:

     1、translate3d(x,y,z) 是用來控制元素的位置在頁面上的三軸的位置的;
     2、rotate(deg)是用來控制元素旋轉角度的;
     3、skew[x,y](deg) 這個屬性是用來製作傾斜度的,也做過設計的人可能會知道,這個是用來在2d裡面創建3d透視圖的時候必須的屬性;
     4、scale3d(x,y,z) 用來放大縮小效果,屬性是比值;
5、matrix3d,css矩陣。透過這個矩陣屬性,涵蓋了上面所有的屬性值,但是個人覺得可讀性極差(全都是數字和單位,背起來有點模糊),目前沒有理由推薦使用。

整體看來css transform的屬性和原來使用的left ,right ,top, bottom 的屬性從動靜角度來說沒有任何區別,因此使用的時候應該將transform歸類到這類定位變形的靜態屬性裡面。

Transition
transition屬性是一個簡單的動畫屬性,非常簡單非常容易用。可以說它是animation的簡化版本,是給普通做簡單的網頁特效用。例如你有以下兩個樣式:

.position{
    left:100px;
    top:100px;
}
.animate{
    -webkit-transition:left 0.5s ease-out;
    left:500px;
    top:500px;
}

其中animate的transition的屬性的意思說:當你的left屬性發生變化的時候,執行動畫效果(僅僅基於left的屬性變化,其他的屬性不會加入動畫變化裡面去);

首先你的元素的css為position。當你將其cssList 增加 animate 或替換position 為animate的時候,元素的屬性變化,觸發webkit-transition,以指定屬性變化前的值為起始值,變化後的屬性為結束值,執行動畫效果。這是一個簡單的兩點變化過程,大大簡化了animation屬性的複雜程度。

同時,如果在transition的動畫當中,屬性值有了新的變化,則會中斷目前的動畫執行,並將中斷時的屬性值提供給新的動畫作為起始值來計算新的動畫效果。

我在css編寫的時候,因為變化的屬性只有transform一個,因此在transtion屬性裡面指定回應屬性為all,可以回應並執行元素所有屬性的變化動畫(能做動畫的屬性)。

Animation
在官方的Introduction上介紹這個屬性是transition屬性的擴充。但是這個簡單的介紹裡麵包含了不簡單的東西:keyframes。

做過Flash動畫的人都會知道,Flash裡面有兩個基礎武器:時間軸和關鍵影格。而css keyframes的出現,則是提供了flash世界裡面的這兩個屬性的集合。看一個簡單的 keyframes 的範例:

@keyframes 'wobble'{
  0%{
   left:100px
}
   30%{
   left:300px;
}
  100%{
   left:500px;
}
}
.animate{
 left:100px;
   -webkit-animation:wobble 0.5s ease-out;
   -webkit-animation-fill-mode:backwards;
}

上面这个代码展示了一个keyframes 'wobble',其中 0% 代表在变化中不同时间点的属性值,你可以较精确的控制动画变化中任何一个时间点的属性效果。而animation则根据这个keyframes提供的属性变化方式去计算元素动画当中的属性。与 transition 不同的是,keyframes提供更多的控制,尤其是时间轴的控制,这点让css animation更加强大,使得flash的部分动画效果可以由css直接控制完成,而这一切,仅仅只需要几行代码,也因此诞生了大量(比起flash来说算是大量了)基于css的animation tools,用来取代flash的动画部分。关于动画工具,可以参考Web standards-based Animation Tools.

另外在animation属性里面还有一个最重要的就是:animation-fill-mode,这个属性标示是以(from/0%)指定的样式 还是以(to/100%)指定的样式为动画完成之后的样式。这个很方便我们控制动画的结尾样式,保证动画的整体连贯。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

CSS3中@keyframes动画的实现

关于css属性的选择对动画性能的影响

CSS实现radio和checkbox的 实现效果

以上是關於CSS3中動畫屬性transform和transition以及animation屬性的區別分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

CSS-tricks編年史XLIIICSS-tricks編年史XLIIIApr 23, 2025 am 09:35 AM

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

tailwind的@Apply功能比聽起來更好tailwind的@Apply功能比聽起來更好Apr 23, 2025 am 09:23 AM

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯

感覺就像我沒有釋放:走向理智的旅程感覺就像我沒有釋放:走向理智的旅程Apr 23, 2025 am 09:19 AM

像白痴一樣部署的部署歸結為您部署的工具與降低複雜性與添加的複雜性之間的獎勵之間的不匹配。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能