CSS3-過渡、變形、動畫
1. 過渡
在CSS3
裡使用 transition
可以實現補間動畫(過渡效果)
- 速寫語法
transition:要過渡的屬性、花費時間、運動曲線、何時開始。 /*如果有多組屬性變化,用逗號隔開*/
- 設定過渡屬性名稱
transition-property :要過渡屬性的名稱(如width)
- 設定過渡花費時間
transition-duration :過渡花費的時間(預設是0,時間單位為s/秒)
- 設定過渡時間曲線
transition-timing-function :規定過渡效果的時間曲線預設是ease慢快慢,linear勻速,分步steps(4)
- 設定延遲時間
transition-delay:延遲效果,規定過渡效果何時開始(預設是0,即刻開始)
- 設定所有屬性都發生變化(過渡)
transition:all 0.5s; /*簡寫,後面倆屬性可以不寫*/ /*這種寫法不建議使用,瀏覽器要挨個遍歷屬性效率低下,建議多組屬性用逗號隔開書寫*/
- 過渡是H5中新增的樣式好多老版本瀏覽器不支援,解決方法是加廠商字首
-moz-transition : left 2s steps(5); -webkit-transition: left 2s steps(5); -o-transition: left 2s steps(5);
- 監聽過渡完成事件
/*監聽過渡完成的事件 transitionend*/ .addEventListener('transitionend', function() { })
- 注意:過渡寫到本身上元素上,誰做過渡動畫寫到誰CSS裡,不建議寫到:hover裡,因為滑鼠移動沒有過渡動畫效果
2. 2D
變形
簡述:
transform
是CSS3
中最具有顛覆性
的特徵之一,可以實現元素的位移
、旋轉
、傾斜
、縮放
,甚至支援矩陣方式
配合過渡和即將學習的動畫知識,可以取代大量之前只能靠Flash
才可以實現的效果
-
移動
transform:translate(x,y) /*移動平移,可以改變元素的位置,x、y可以為負值,也可以是%相對於元素自己寬高的百分比, 寫一個值預設為 X。值要加上單位如:300px;*/ /*======================================================================================*/ /*X,Y也可以分開寫:*/ transform:translateX(300px) transform:translateY(300px) /*注:a. 移動是相對於元素左上角座標 b. 執行完畢會回覆原始狀態*/
-
縮放
transform:scale(0.8, 1) /*表示寬度縮放為 80%,高度不變,1為100%,只寫一個值預設為寬高一起縮放, 配合過渡一起可以做圖片縮放效果*/ /*======================================================================================*/ /* X,Y也可以分開寫:*/ transform:scaleX(2) transform:scaleY(2) /*注:a. 縮放是以元素中心為原點 b. 執行完畢會回覆原始狀態*/
-
旋轉
transform:rotate(45deg); /*deg為旋轉的度數,正數數值為順時針旋轉,負數數值為逆時針旋轉 注:a. 相對於Z軸旋轉 b. 執行完畢會回覆原始狀態*/
-
傾斜
transform:skew(deg,deg) /*傾斜的度數,倆值分別為X水平傾斜、Y垂直傾斜,可以取負值,第二個引數不寫預設為0*/ /*如果角度為正,則往當前軸的負方向傾斜,如果角度為負,則往當前軸的正方向傾斜;寫兩個值先傾斜水平方向,再傾斜垂直方向*/ /*============================================================================================*/ /*也可以單獨書寫水平、垂直方向傾斜*/ skewX(); skewY(); /*注:相對於中心位置進行傾斜 b. 執行完畢會回覆原始狀態*/
-
設定轉換變形的原點
transform-origin: right bottom; /*右下角的意思;也可以用數值*/ transform-origin: 10px 10px;/*表示原點為x、y軸的10px處。一般預設為元素的中心點為原點*/
-
一般常用的是
移動
、縮放
、旋轉
-
注意
移動、縮放、旋轉、傾斜同時分開寫會出現層疊。 正確的寫法是連寫空格隔開:transform:translate(100px,100px) scale(0.3) 移動和旋轉同時的情況下,移動寫在前面,否則會改變移動的方向
配合過渡,需把 transform 給過渡當要做過渡的屬性
3. 3D
變形
3D
是基於2D
的也是使用transform
-
移動
transform: translate3d(x,y,z) /*使元素在這三個經緯軸中移動,必須寫三個值*/ /*也可以分開寫:*/ transform: translateX(300px) transform: translateY(300px) transform: translateZ(300px) /*Z軸移動在平面上看不出效果*/
-
縮放
transform:scale3d(0.5,1,2) /*值參考2D*/ /*也可以分開寫:*/ transform:scale3dX(0.5,1,2) transform:scale3dY(0.5,1,2) transform:scale3dZ(0.5,1,2) /*Z軸縮放在平面上看不出效果*/
-
旋轉
transform: rotate3d(x,y,z,deg); /*x:代表 x 軸上的一個向量值 y:代表 y 軸上的一個向量值 z:代表 z 軸上的一個向量值 deg:代表旋轉的度數 如果只圍繞一個軸旋轉,其它兩個軸寫0即可,一個軸值寫多大都一樣,一般取1 多個軸會根據每個軸的向量值來確定旋轉的軸線*/
-
保留3D轉換的結果
/* 使被轉換的子元素保留其3D轉換效果(需要設定在父元素中)*/ transform-style: preserve-3d; /*取值:flat 不保留,預設值 preserve-3d 保留*/
-
透視、景深效果(前面不需要加
transform
)/*A. 深度:*/ perspective: 500px; /*一般寫500px就好,透視度寫給父級盒子*/ /*0為元素中的中心點,加大是往螢幕外的方向,減小是往螢幕裡面方向;去觀看元素盒子*/ /*B. 角度:*/ perspective-origin:0px 0px; /*規定鏡頭在平面上的位置。預設是放在元素的中心 兩個引數為x、y,可取正負數切換角度*/
-
定義當元素不面向螢幕時是否可見
backface-visibility:hidden;
4. 動畫
-
語法:
animation: 動畫名稱、花費時間、運動曲線、何時開始、播放次數、是否反方向 /*一般簡寫只寫前兩個屬性,後面都是預設的*/
-
屬性:
1. 規定動畫: @keyframes 2. 屬性簡寫: animation 所有動畫屬性的簡寫屬性,除了 animation-play-state 屬性。 3. 動畫名稱: animation-name 規定 @keyframes 動畫的名稱。 4. 動畫耗時: animation-duration 規定動畫完成一個週期所花費的秒或毫秒。預設是 0。 5. 速度曲線: animation-timing-function 規定動畫的速度曲線。預設是ease慢快慢,linear勻速,分步steps(4) 6. 動畫延遲: animation-delay 規定動畫何時開始。預設是0s。 7. 動畫次數: animation-iteration-count 規定動畫被播放的次數。預設是 1。(無限次infinite) 8. 交替動畫: animation-direction 規定動畫是否在下一週期逆向地播放。預設是 "normal"。(逆向alternate) 9. 動畫播放狀態: animation-play-state 規定動畫是否正在播放或暫停(paused)。預設是 "running播放"。 10. 動畫之外的狀態:animation-fill-mode: 規定物件動畫時間之外的狀態。 取值:forwards 保留動畫結束時的狀態,在設定了動畫延遲和初始狀態(如:旋轉)的情況下, 不會立刻執行動畫的初始狀態 backwards 不會保留動畫結束時的狀態,但是如果在設定了動畫延遲和初始狀態(如:旋轉)的情況下, 會立刻執行動畫的初始狀態 both 既保留動畫結束狀態,在設定了動畫延遲和初始狀態(如:旋轉)的情況下, 也會立刻執行動畫的初始狀態
-
用法:
/*在需要動畫的元素的 css 裡呼叫方法(函式) animation:動畫名稱 花費時間... 然後在css頁面宣告函式(方法)*/ @keyframes 動畫名稱{ form{ 從哪開始,如: left:0; } to{ 到哪結束,如: left:1000px; } } /*=================================================================*/ /*另一種百分比寫法:*/ @keyframes 動畫名稱{ 0%{ 從哪開始,如: left:0; } 50%{ 到哪結束,如: left:1000px; } 100%{ } } /*注:0%可以寫成form 100%可以寫成to 注:可以用百分比方式來設定動畫各個時段的狀態,每個時段都是一個關鍵幀,中間的動畫過程叫補間 動畫。 注:過渡只有兩個關鍵幀*/
相關文章
- CSS 小結筆記之變形、過渡與動畫CSS筆記動畫
- CSS3的過渡,動畫,圖形轉換CSSS3動畫
- CSS hover改變背景圖片過渡動畫生硬CSS動畫
- Vue實列之過渡和動畫,標籤過渡,多元件過渡,列表過渡Vue動畫元件
- 從傳統動畫到react動畫過渡動畫React
- AE/PR指令碼模板-100種彩色漸變圖形動畫轉場過渡 Gradient Transitions Pack指令碼動畫
- CSS變形動畫CSS動畫
- [譯] WindowsInsets 和 Fragment 過渡動畫WindowsFragment動畫
- CSS 炫酷文字過渡動畫CSS動畫
- Vue - 使用 transition 過渡動畫、Animate.css 庫動畫Vue動畫CSS
- Flutter 建立自定義路由過渡動畫Flutter路由動畫
- 在 Flutter 新增頁面過渡動畫Flutter動畫
- 第4章 Vue 過渡和動畫Vue動畫
- 通過示例瞭解Vue過渡和動畫Vue動畫
- CSS 奇技淫巧:動態高度過渡動畫CSS動畫
- MaterialDesign系列文章(三)過渡動畫的實現動畫
- vue.js - 過渡&動畫 - 無效情況Vue.js動畫
- [iOS]過渡動畫之入門模仿系統iOS動畫
- 過渡和動畫的區別是什麼?動畫
- Vue.js 動畫與過渡效果實戰Vue.js動畫
- flutter 暗黑模式切換過渡動畫實現Flutter模式動畫
- CSS 如何讓auto height完美支援過渡動畫?CSS動畫
- 【動畫消消樂|CSS】086.炫酷水波浪Loading過渡動畫動畫CSS
- Vue中的基礎過渡動畫原理解析Vue動畫
- css揭祕實戰技巧 - 過渡與動畫[七]CSS動畫
- 基於react-transition-group的react過渡動畫React動畫
- 【動畫消消樂 】一個小清新型別的全域性網頁過渡動畫 075動畫型別網頁
- d3.js 入門學習記錄(六) 過渡動畫JS動畫
- 在OpenGL中實現視角切換插值過渡動畫動畫
- Android技術分享| Activity 過渡動畫 — 讓切換更加炫酷Android動畫
- FCPX外掛Brush Transitions(墨滴和手繪過渡動畫模板)動畫
- 👾 筆記 | react-transition-group 實現路由切換過渡動畫筆記React路由動畫
- iOS動畫專題·UIView二維形變動畫與CAAnimation核心動畫(transform動畫,基礎,關鍵幀,組動畫,路徑動畫,貝塞爾曲線)iOS動畫UIViewORM
- 第9章 CSS3中的變形與動畫(下)CSSS3動畫
- 第8章 CSS3中的變形與動畫(上)CSSS3動畫
- 四個基本的JavaScript函式來馴服CSS3過渡和動畫(JavaScript函式CSSS3動畫
- 超級簡單CSS專案,懸停過渡動畫三部曲CSS動畫
- 送給CSS初學者的懸停過渡動畫三部曲CSS動畫