2012年2月23日

[jQuery] 用animate改變寬度時若動畫不太順暢..

前陣子發現的小問題,用animate改變寬度或高度時,例如:
$(this).animate({width:"0px"}, 300);

如果作用的元素有padding或margin時,動畫會有點不順暢的跳格感 (特別是旁邊有相鄰並排的元素時)
解決方法是將padding與margin也同時加入animate中,例如:

//jQuery snippet:
.animate({
   width:"0px",
   marginRight:"0px",
   paddingRight:"0px",
   paddingLeft:"0px"
}, 300);


這樣就ok了 ^o^ 如果是改變高度的話也依此類推

不過要注意括號中的CSS屬性不能用縮寫,必須要用全名
padding → paddingLeft, paddingTop etc.
margin → marginLeft, marginTop etc

P.S. 因為在box model中,content的寬高, padding, border, margin 是分開計算的,可參考以下W3C的說明與範例:
http://www.w3.org/TR/CSS2/box.html
http://www.w3schools.com/css/css_boxmodel.asp

沒有留言:

張貼留言

關於我