最近入職一家公司接手了一個項目,使用了vue+framework7,這個項目使用framework7的初衷只是把它看成UI框架,可是在ios的safari瀏覽器或者是微信內置的瀏覽器打開時會出現滾動凍結的問題。 具體操做: 頁面處於頂端時用力往下拉,或者頁面處於底部時用力往下拉,在ios下頂部或者底部會出現空白區域,手鬆開後頁面會恢復到原位,可是有時候通過上面的操做後,頁面沒法用手指滑動了。
先上解決的代碼,可是這個並非很完美,可是也找不到更好的辦法了
在你的項目中使用的全局樣式文件中添加:html
.page-content::before { display: block; content: ""; position: absolute; z-index: -99999; top: 0px; left: 0px; bottom: -1px; right: 0px; }
兇手就是這個屬性vue
-webkit-overflow-scrolling: touch;
這個屬性只有在iOS下才生效,當容器中的內容的height大於容器的height的時候使用overflow: scroll,就會產生滾動,而-webkit-overflow-scrolling: touch就會使滾動變得平滑、帶有慣性。在Android中的屬性是overflow: scroll或者overflow: auto後是不須要這個屬性的,自己的滾動就會產平生滑和帶有慣性的效果。ios
至於爲何這個屬性致使了iOS滾動凍結的緣由,emmmm...水平過低不知道怎麼研究。
百度了很久看到一篇文章
深刻研究-webkit-overflow-scrolling:touch及ios滾動
這篇文章講述了基本的緣由,不過最後的解決方案我試過好像仍是有點問題,用手在屏幕上快速滑動的時候仍是會凍結git
最後到github上framework7的issue中找有人遇到相同的問題了,我提出了個人狀況,有我的回覆了,上面的解決的代碼就是它提供的,這個是連接Problem with scrolling in App in Home Screen Added.github
解決思路跟上面一篇國內的文章是同樣的,可是我感受這個更好
國外還有另一款框架叫onsen跟framework7有相同的問題,由於他們爲了使iOS的滾動可以平滑都使用了-webkit-overflow-scrolling: touch;web