前言: 在說到實現元素的展開收縮,通常的想法是通過控制display的元素屬性和none之間的切換,雖然說功能可以實現,但是這種展開是沒有任何動畫的效果,只是單純的顯示與隱藏。例外一種方法就是通過JQuery的slideUp()、slideDown()方法,這是jQuery帶有的功能屬性,大家都應該 ...
前言:
在說到實現元素的展開收縮,通常的想法是通過控制display的元素屬性和none之間的切換,雖然說功能可以實現,但是這種展開是沒有任何動畫的效果,只是單純的顯示與隱藏。例外一種方法就是通過JQuery的slideUp()、slideDown()方法,這是jQuery帶有的功能屬性,大家都應該很清楚,在有些情況下JavaScript框架都是沒有動畫模塊的,比如移動端,所以使用CSS實現動畫效果就成了最好的選擇。
下麵我們將說一說max-height的二三事!
1.先上CSS參考手冊關於max-height的說明
2.
使用CSS實現展開收縮的效果第一想法就是通過height+overflow:hidden實現,使用過這種方式的一般都知道在實現的過程都是將height的高度固定寫死,高度auto的話是無法形成過渡的動畫效果,auto是一個關鍵字值,並非數值,因此,height:100%的100%和auto兩者,height從0px到auto也是無法計算的。
上實例:
/*css*/
.element{ height: 0; overflow: hidden; transition: height .25s; background-color: pink; } :checked ~ .element{ height: 100%; /*高度100%和auto都是生硬的效果,給定具體值可以實現動畫*/ } /* html*/ <input id="check" type="checkbox"> <div class="element"> <div class="box" style="width: 100%;height: 800px"></div> </div> <label for="check" >收縮</label>
max-height的方法實現過程:
/*css*/ .element{ max-height: 0; overflow: hidden; transition: max-height .25s; background-color: pink; } :checked ~ .element{ max-height: 2000px; /*足夠存放內容的高度*/ } /*html*/ <input id="check" type="checkbox"> <div class="element"> <div class="box" style="width: 100%;height: 800px"></div> </div> <label for="check" >收縮</label>
這樣寫的max-height,給定足夠大的高度,就是言義上的任意高度,相對height來說比較靈活,兩者的區別就是計算高度的過程,一個是由人為計算,一個由盒子內容高度去計算知識這種寫法必須給定足夠存放內容的高,寫的時候儘量寫大一點。
後記:當初看了張鑫旭的CSS世界,對max-height有過一點印象,最近接觸使用到height展開收縮動畫這一點,所以寫編文章記錄學習一下,關於這一點詳細的具體介紹可以參考《CSS世界》一書中的介紹,其中可能存在疑點或者錯誤,如果有錯誤的地方,歡迎各位大牛指正!獻上花花。。。(*^__^*) 嘻嘻……