本篇文章由:http://xinpure.com/position-fixed-encountered-an-invalid-event/css
transform
這是在使用 iscroll js滾動庫的時候,遇到的問題css3
當時的需求是須要在滾動到必定的距離的時候,將一個 tab 列表固定到頂部,不隨頁面滾動web
固定定位元素嘛,小事!咱們知道這是一個很是普通的需求,實現方式也比較簡單,那就是使用 position: fixed
就能夠將元素固定到瀏覽器的指定位置了chrome
而我也照作了,使人無語的是,徹底沒有效果?! (僅僅只是 position: absolute
的效果)瀏覽器
後來通過一番調試以後,發現是由於父元素有一個 transform
屬性,致使了這個問題的出現。ide
由於 iscroll 是基於 transform
屬性實現滾動的, 因此 iscroll 會經過實時修改元素的 transform
屬性以達到滾動的效果wordpress
也就是說,只要父元素若是存在 transform
屬性,子元素的 position: fixed
屬性無效。post
https://bugs.chromium.org/p/chromium/issues/detail?id=20574google
"position: fixed" still do not cope with transform value
firefox
這個解釋好有道理!
連接中也有提到說給子元素添加 -webkit-transform: translateZ(0);
就能夠解決這個問題
我只能說親測無效!
http://www.zhangxinxu.com/wordpress/2015/05/css3-transform-affect/
-webkit-overflow-scrolling
在 Mobile Web 開發中,用戶體驗是個很是重要的點。
因此像平滑滾動的特性是少不了的,一般會使用 -webkit-overflow-scrolling
實現這一效果
該屬性控制元素在移動設備上是否使用滾動回彈效果。
-webkit-overflow-scrolling: touch; /* 當手指從觸摸屏上移開,會保持一段時間的滾動 */ -webkit-overflow-scrolling: auto; /* 當手指從觸摸屏上移開,滾動會當即中止 */
不巧,此次我又有個將元素設置成 position: fixed 的需求
在有上次的經歷(transform)後,並無讓我長什麼記性,不過說實話,position 這本來就是一個特別簡單的一個屬性,又怎麼會。。。
只能說話音剛落,瞬間就蒙逼了!又是無效!心中草泥馬縱橫交錯!
最後也是發現,只要父元素的 -webkit-overflow-scrolling
屬性值爲 touch
,子元素的 position: fixed
屬性就無效。
Not Found