css3實現動畫有幾種方式?
這是一個考驗面試者對css的基礎知識。
css
實現動畫主要有3種方式,第一種是:transition
實現漸變動畫,第二種是:transform
轉變動畫,第三種是:animation
實現自定義動畫,下面具體講一下3種動畫的實現方式。
transition漸變動畫
我們先看一下transition
的屬性:
- property:填寫需要變化的css屬性如:width,line-height,font-size,color等,所有作用與dom樣式的屬性;
- duration:完成過渡效果需要的時間單位(s或者ms)
- timing-function:完成效果的速度曲線(linear,ease,ease-in,ease-out等等)
timing-function具體的值可以看下面的表格:
值 | 描述 |
---|---|
linear | 勻速(等於 cubic-bezier(0,0,1,1)) |
ease | 從慢到快再到慢(cubic-bezier(0.25,0.1,0.25,1)) |
ease-in | 慢慢變快(等於 cubic-bezier(0.42,0,1,1)) |
ease-out | 慢慢變慢(等於 cubic-bezier(0,0,0.58,1)) |
ease-in-out | 先變快再到慢(等於 cubic-bezier(0.42,0,0.58,1)),漸顯漸隱效果 |
cubic-bezier(n,n,n,n) | 在 cubic-bezier 函式中定義自己的值。可能的值是 0 至 1 之間的數值 |
delay: 動畫效果的延遲觸發時間(單位ms或者s)
下面我們看一個完整的例子:
<div class="base"></div>
.base {
width: 100px;
height: 100px;
display: inline-block;
background-color: #0EA9FF;
border-width: 5px;
border-style: solid;
border-color: #5daf34;
transition-property: width,height,background-color,border-width;
transition-duration: 2s;
transition-timing-function: ease-in;
transition-delay: 500ms;
/*簡寫*/
/*transition: all 2s ease-in 500ms;*/
&:hover {
width: 200px;
height: 200px;
background-color: #5daf34;
border-width: 10px;
border-color: #3a8ee6;
}
}
執行效果:
可以看到,滑鼠移上去的時候,動畫延遲0.5s開始,並且由於
border-color
沒有設定到transition-property
裡面,所以是沒有漸變動畫的。
transform轉變動畫
transform屬性應用於2D 或 3D轉換。該屬性允許我們能夠對元素進行旋轉、縮放、傾斜、移動這四類操作.一般是配合transition的屬性一起使用。
- none:定義不進行任何轉換,一般用於註冊掉該轉換。
- transform-functions:定義要進行轉換的型別函式。主要有:
2.1 旋轉(rotate):主要分為2D旋轉和3D旋轉。rotate(angle),2D 旋轉,引數為角度,如45deg;rotate(x,y,z,angle),3D旋轉,圍繞原地到(x,y,z)的直線進行3D旋轉;rotateX(angle),沿著X軸進行3D旋轉;rotateY(angle);rotateZ(angle);
2.2 縮放(scale):一般用於元素的大小收縮設定。主要型別同上,有scale(x, y)、scale3d(x, y, z)、scaleX(x)、scaleY(y)、scaleZ(z),其中x、y、z為收縮比例。
2.3 傾斜(skew):主要用於對元素的樣式傾斜。skew(x-angle, y-angle),沿著x和y軸的2D傾斜轉換;skewX(angle),沿著x軸的2D傾斜轉換;skew(angle),沿著y軸的2D傾斜轉換。
2.4 移動(translate):主要用於將元素移動。translate(x, y),定義向x和y軸移動的畫素點;translate(x, y, z),定義像x、y、z軸移動的畫素點;translateX(x);translateY(y);translateZ(z)。
<h5>transition配合transform一起使用</h5>
<div class="base base2"></div>
.base2{
transform:none;
transition-property: transform;
&:hover {
transform:scale(0.8, 1.5) rotate(35deg) skew(5deg) translate(15px, 25px);
}
}
執行效果:
可以看到盒子發生了旋轉,傾斜,平移,放大。
animation自定義動畫
為了實現更靈活的動畫效果,css3還提供了自定義動畫的功能。
(1) name:需要繫結到選擇器的keyframe名稱。
(2) duration:完成該動畫需要花費的時間,秒或毫秒。
(3) timing-function:跟transition-linear一樣。
(4) delay:設定動畫在開始之前的延遲。
(5) iteration-count:設定動畫執行的次數,infinite為無限次迴圈。
(6) direction:是否輪詢反向播放動畫。normal,預設值,動畫應該正常播放;alternate,動畫應該輪流反向播放。
<h5 class="title">animate自定義動畫</h5>
<div class="base base3"></div>
.base3 {
border-radius: 50%;
transform:none;
position: relative;
width: 100px;
height: 100px;
background: linear-gradient(
35deg,
#ccffff,
#ffcccc
);
&:hover {
animation-name: bounce;
animation-duration: 3s;
animation-iteration-count: infinite;
}
}
@keyframes bounce{
0% {
top: 0px;
}
50% {
top: 249px;
width: 130px;
height: 70px;
}
100% {
top: 0px;
}
}
執行效果:
可以看到,自定義動畫能實現更靈活的動畫效果,包括了第一種和第二種動畫的所有功能,而且屬性也更全面。
以上幾種方式都是純css實現的動畫,其實用js也能實現更豐富,更靈活的動畫。最後提供幾個線上製作動畫的網站給大家:
線上製作1:
線上製作2:
以上程式碼可以線上體驗:
線上體驗地址:
所有的原始碼都可以在我的倉庫地址:
個人部落格:
學習如逆水行舟,不進則退,前端技術飛速發展,如果每天不堅持學習,就會跟不上,我會陪著大家,每天堅持推送博文,跟大家一同進步,希望大家能關注我,第一時間收到最新文章。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2825372/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AOP 有幾種實現方式?
- 手寫CSS3動畫的幾種流派CSSS3動畫
- 實現 JavaScript 沙箱的幾種方式JavaScript
- 答面試官問:如何防超賣,有幾種實現方式面試
- 新手引導動畫的4種實現方式動畫
- 實現登入態的幾種方式
- 互動投影的幾種實現方式
- 分散式鎖的幾種實現方式分散式
- js實現繼承的幾種方式JS繼承
- 分散式鎖的幾種實現方式~分散式
- 淺析malloc()的幾種實現方式
- java幾種代理模式的實現方式Java模式
- CSS3 動畫實現12種風格的通知提示CSSS3動畫
- CSS3實現流星動畫CSSS3動畫
- css實現水平垂直居中的幾種方式CSS
- 分散式事務的幾種實現方式分散式
- Android 截圖實現的幾種方式Android
- iOS實現幾種會用到的加密方式iOS加密
- 幀動畫的多種實現方式與效能對比動畫
- css3實現逐幀動畫CSSS3動畫
- css3 實現逐幀動畫CSSS3動畫
- 幾種實現延時任務的方式(一)
- 三欄式佈局的幾種實現方式
- 實現繼承的幾種方式及工作原理繼承
- javascript實現的繼承的幾種常用方式JavaScript繼承
- java定時任務實現的幾種方式Java
- Android 頁面跳轉動畫的兩種實現方式Android動畫
- 服務限流,我有6種實現方式…
- C#非同步有多少種實現方式?C#非同步
- JavaScript物件的建立方式有幾種?JavaScript物件
- docker 容器如何固定ip,有幾種方式Docker
- css3實現動畫閃爍效果CSSS3動畫
- css3實現顫動的動畫CSSS3動畫
- 純CSS3實現人物跑步動畫CSSS3動畫
- 小結:二叉樹的幾種實現方式二叉樹
- web前端換行程式碼的幾種實現方式!Web前端行程
- Java建立多執行緒的幾種方式實現Java執行緒
- React 提供了幾種方式來實現條件渲染React