IOS在滾動的時候fixed消失

2022-07-20 10:39:16 字數 657 閱讀 9753

眾所周知,ios在滾動的時候是不能執行js的,這雖然是它內部的實現導致的,也為了解決這一問題,它特地推出的position:sticky屬性,來相容一些對動態設定fixed的場景,不過,當筆者的測試機公升級到了ios11的時候,一切又不一樣了:    

在ios11上開啟滾動以上的頁面(如果看不到效果可以訪問這個鏈結),會發現頁面上的fixed的button如果滾動得過快則會消失,當滾動停止之後又會再次出現,乙個非常奇怪的問題,經過筆者和團隊的小夥伴的多方除錯參考,發現主流的解決方案有兩種:

1、直接避免用瀏覽器的滾動事件,完全使用touch事件模擬滾動,也就是這篇文章所介紹的;

2、另一種就比較有趣了,能夠在改動比較小的情況下修復這個ios11的這個bug,請看這個鏈結

其實原理很簡單,筆者經過一些除錯發現,只要滾動的元素用的不是window的滾動條,且fixed的元素不在滾動元素內部,及定位元素和滾動元素要在同乙個層級,就能夠比較方便的規避ios11的這個缺陷:

給要滾動的元素加上

overflow: auto;

-webkit-overflow-scrolling: touch;

height: 100vh;

網上有說加上 transform: translate3d(0, 0, 0);但是經測試並沒有用

fixed在ios失效解決方案

position fixed 在ios系統上失效,自己在網上搜了一些解決辦法,解決辦法如下 需要滑動的class為content wanttoscroll需要固定的class為.wanttofix wanttofix說明 webkit overflow scrolling touch 這個要加,讓i...

overflow scroll 在ios 滾動卡頓

使用 webkit overflow scrolling 屬性控制元素在移動裝置上是否使用滾動回彈效果.auto 使用普通滾動,當手指從觸控螢幕上移開,滾動會立即停止。touch 使用具有回彈效果的滾動,當手指從觸控螢幕上移開,內容會繼續保持一段時間的滾動效果。繼續滾動的速度和持續的時間和滾動手勢的...

fixed在移動端的坑

fixed在某些情況下可能導致容器內的子元素的1px邊框線消失,即使使用z index也無法解決。解決方法 可以使用translatez屬性來解決 fixed定位的容器內不能帶有input,這是常見的bug。解決方法 在input聚焦的時候去掉fixed定位狀態,改為absolute。fixed 可...