CSS3中的元素過渡屬性transition示例詳解

前言
W3C標準中對css3的transition這是樣描述的:“css的transition允許css的屬性值在一定的時間區(qū)間內(nèi)平滑地過渡。這種效果可以在鼠標單擊、獲得焦點、被點擊或?qū)υ厝魏胃淖冎杏|發(fā),并圓滑地以動畫效果改變CSS的屬性值。”
過渡transition
先來看一個小例子
<div class="demo"></div>
.demo { width: 100px; height: 100px; background-color: royalblue; } .demo:hover { width: 200px; }
這樣當我的光標懸浮在demo的一瞬間
它的寬度變成了200px
有沒有辦法讓我們光標懸浮在元素時,元素寬度緩慢變寬呢
在CSS3之前我們只能使用麻煩的js腳本
但是現(xiàn)在我們只需要添加一個屬性
就可以達到我們的目的
.demo { width: 100px; height: 100px; background-color: royalblue; transition: width 1s; /*增*/ } .demo:hover { width: 200px; }
transition它的作用就是指定當你的元素某些樣式發(fā)生變化時
這些樣式可以漸漸過渡到最終屬性值
它是一個復(fù)合屬性
有以下子屬性
transition-property:指定過渡或動態(tài)模擬的css屬性
transition-duration:指定過渡所需要的時間
transition-timing-function:指定過渡函數(shù)
transition-delay:指定開始出現(xiàn)的延遲時間
transition-property 我們想要哪種屬性過渡就寫哪種屬性
或者干脆寫過渡所有屬性的關(guān)鍵字all
transition-duration漸變時間屬性值就是“數(shù)字+s”
代表幾秒鐘內(nèi)過渡
transition-timing-function 是可選的屬性值,有如下可選值
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():
兩個參數(shù)的步進函數(shù)。第一個參數(shù)為正整數(shù),指定函數(shù)步數(shù)。第二個參數(shù)取值是start或end,指定每一步的值發(fā)生變化的時間點。第二個參數(shù)可選,默認值為end。
cubic-bezier(num, num, num, num):
特定的貝塞爾曲線類型,4個數(shù)值需在[0, 1]區(qū)間內(nèi)
大多我們都用不上,最常用的大概就是我們默認的ease和線性過渡linear了
transition-delay 同樣是可選屬性值
如果你想要延遲過渡,換句話說如果我們想要在過渡前停一小會兒
那么就在這個復(fù)合屬性的最后添加我們需要延遲的時間“數(shù)字+s”
這個屬性可以對多個不同的屬性進行設(shè)置
我們要做的就是使用逗號隔開
.demo { width: 100px; height: 100px; background-color: royalblue; transition: width 1s linear, height 1s linear, background-color 2s 1s; /*改*/ } .demo:hover { width: 200px; height: 200px; background-color: lawngreen; /*改*/ }
鼠標移出元素后,元素又過渡回來
使用過渡屬性而不是腳本的另一個原因是
腳本方法改變多個元素樣式可能會產(chǎn)生沖突
解決的辦法是使用bool變量加鎖,還是很麻煩
我們的transition過渡屬性就不需要考慮這么多
元素與元素之間互不影響
還有一點要注意,元素過渡需要知道樣式具體的起始屬性和末尾屬性
比如說我們例子中的width明確了從100px過渡到200px
.demo:hover { width: auto; /*改*/ height: 200px; background-color: lawngreen; /*改*/ }
改變了懸浮樣式width為auto
我們發(fā)現(xiàn)當光標懸浮元素后
width屬性并沒有發(fā)生過渡
參與過渡的屬性
當然也不是所有的樣式都可以過渡
比如說你想讓 display:block 過渡到 display:inline-block
那是不可能的
有以下屬性參與過渡
color visibility opacity vertical-align z-index clip width/height top/bottom/left/right background-color/position border-top/bottom/left/right-color/width border/letter/word-spacing font-size/weight line-height margin/padding-top/bottom/left/right max/min-height/width outline-color/width text-indent/shadow
可以看到這個屬性真的是十分強大
總結(jié)
以上就是這篇文章的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
解決CSS3 transition-delay 屬性默認值0不帶單位失效的問題
這篇文章主要介紹了解決CSS3 transition-delay 屬性默認值0不帶單位失效的問題,本文給大介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-29CSS3使用transition屬性實現(xiàn)過渡效果
CSS3中新增的transform屬性,可以實現(xiàn)元素在變換過程中的過渡效果,實現(xiàn)了基本的動畫。下面通過本文給大家介紹CSS3使用transition屬性實現(xiàn)過渡效果,需要的朋友參考下本文2018-04-18詳解css3 Transition屬性(平滑過渡菜單欄案例)
這篇文章主要介紹了詳解css3 Transition屬性(平滑過渡菜單欄案例)的相關(guān)資料,需要的朋友可以參考下2017-09-05CSS3與動畫有關(guān)的屬性transition、animation、transform對比(史上最全
這篇文章主要介紹了CSS3與動畫有關(guān)的屬性transition、animation、transform對比,通過瀏覽器兼容性,用法和對比更深刻的展示了彼此之間的異同,具體操作步驟大家可查看下文2017-08-18CSS3中動畫屬性transform、transition和animation屬性的區(qū)別
最近在項目中用到了CSS3中的動畫屬性。無奈對于css3幾個新加的屬性不太熟悉,常常容易搞混。所以從網(wǎng)站研究了點資料,總結(jié)一下,方便有需要的朋友們可以參考學習。2016-09-25- css3中通過transition屬性可以實現(xiàn)一些簡單的動畫過渡效果,今天通過本文給大家介紹下css3中transition屬性的示例代碼,感興趣的朋友跟隨小編一起看看吧2022-02-18