故事的原由是,在一個多列表的頁面上,頁面在iOS11,跟iOS10中會發生頁面卡住,不能進行滾動。css
而後就懷疑是本身的樣式寫的出了問題,就一直排查定位元素的樣式,怎麼都找不到問題所在。html
但仍是本着追根溯源的精神,定位到根元素的樣式上有一個
-webkit-overflow-scrolling: touch;
的樣式屬性;而後查了一下該屬性:ios
-webkit-overflow-scrolling
屬性控制元素在移動設備上是否使用滾動回彈效果.web
在移動端上,在你用overflow-y:scorll屬性的時候,你會發現滾動的效果很很生硬,很慢,這時候可使用-webkit-overflow-scrolling:touch這個屬性,讓滾動條產生滾動回彈的效果,就像ios原生的滾動條同樣流暢。app
可是的可是,-webkit-overflow-scrolling:touch這個屬性真的是超級神坑,好比:ui
<div id="app" style="-webkit-overflow-scrolling: touch; "> <div style="min-height:101%"></div> </div>
<div id="app" style="-webkit-overflow-scrolling: touch; "> <div style="height:calc(100%+1px)"></div> </div>
方法就是在webkit-overflow-scrolling:touch屬性的下一層子元素上,將height加1%或1px。從而主動觸發scrollbar。spa
Safari
對於overflow-scrolling
用了原生控件來實現。對於有-webkit-overflow-scrolling
的網頁,會建立一個UIScrollView
,提供子layer給渲染模塊使用。咱們也就只能解決到這了。code
不得不感嘆,這些神奇的黑魔法,看的奇奇怪怪可是真實 的解決了實際的問題,畢竟css自己也是就是黑魔法本黑了,更不要說移動端這個天坑了。 最後感謝一下 博主 夏大師的總結;原連接在此https://www.cnblogs.com/xiahj/p/8036419.html。我也只是按照本身的思路重新整理一下。 侵刪。htm