兼容現象:
在App的webview里邊,我們有時候會在頁面里寫自定義頭部,會使用到fixed定位,我們想要的效果是,頁面無論怎么滑動,這個自定義的頭部始終是固定在頂部的,但是在ios 11以上的版本里邊,問題來了,當我們快速滑動頁面的時候,頁面滾動期間,這個fixed定位的頭部會隨着頁面的滑動滑上去,等到上滑動作執行完畢時,頭部才又出現。這個問題在安卓及ios11以下的版本都是沒有的。
解決:
直接將這個頁面控制在一個盒子里邊去滑動,頭部相對於這個盒子進行絕對定位。但是這樣寫帶來的副作用就是除類名為wrapper的元素外,其他元素的scrollTop屬性值總是0。
<div class="box" style="position:absolute;top;0;left:0;right:0;bottom:0;-webkit-overflow-scrolling:touch;"> <div class="head" style="position:absolute;top;0;left:0;right:0;">Head</div> <div class="wrapper" style="position:absolute;top;0;left:0;right:0;bottom:0;overflow-y:scroll;"> <div class="content"> <p>para</p> ... <p>para</p> </div> </div> </div>
- 2018/1/24更新 -
后來在項目中發現,這么處理,會引發另外一個問題,快速滑動頁面,頭部是固定了,沒有問題了,但是 .content 里邊的內容會消失,導致頁面在滑動的時候,里邊的東西是空白的,上滑和下滑均是如此,因此還需要做另外一個處理,,給 .content 或.content里邊的子元素加上 overflow-y:hidden,這樣頁面在快速滑動的時候,里邊的內容就不會消失了。