首頁  >  文章  >  web前端  >  分享CSS3中-webkit-overflow-scolling的使用心得

分享CSS3中-webkit-overflow-scolling的使用心得

yulia
yulia原創
2018-09-19 16:16:531867瀏覽

滾動條在頁面佈局中用得也比較多,這篇文章就和大家分享一下,我使用-webkit-overflow-scolling的心得,避免小伙伴們踩坑,有需要的可以過來看看。

我們都知道在ios的safari瀏覽器和app內核瀏覽器中,當一個h5頁面內容超出屏幕高度,我們手指去滑動屏幕的時候,只要手勢一離開屏幕,滾動立刻結束。這時候我們可以透過設定-webkit-overflow-scrolling=touch來讓頁面可以順暢滾動,但是設定這個也會引出許多問題。

1、單獨對body設定-webkit-overflow-scrolling touch是無效的,需要針對html和body同時設定才有效果,程式碼如下:

html,body{
    height: 100%;
    overflow: auto;
   -webkit-overflow-scrolling: touch;
}

2、父容器設定- webkit-overflow-scrolling=touch後,子容器不允許出現fixed固定的子元素,為什麼這麼說呢。因為當你設定-webkit-overflow-scrolling=touch後,你滑動螢幕的時候會發現fixed屬性失效了,他也跟著螢幕滾動了,只有當滾動停止的時候這個元素才會在固定到頁面上。顯然這不是我們要的結果。

這裡我的解決方法是不把-webkit-overflow-scrolling設置在body元素上,在需要滾動的地方另外增加div容器去設定,然後把需要fixed的容器都直接放在body元素內。

3、單獨對div設定-webkit-overflow-scrolling屬性無效,經測試後發現,我需要先對父容器div1設定為有高度的容器,然後在對超出的子容器設定-webkit-overflow-scrolling屬性具體程式碼如下:

<style>.div-p{ width: 100%; height: 500px;/*这是测试值,具体针对项目需求设置,不要超出子容器内容高度*/overflow: hidden;/*设不设定这个值对-webkit-overflow-scrolling没有影响*/}
.div-c{ width: 100%; height: 2000px; overflow: auto;/*测试发现一定要设定这个值才起作用*/ -webkit-overflow-scrolling: touch;}</style>
<div class="div-p">
<div class="div-c">我要滚动啊,,在ios要顺畅啊</div>
</div>

經過反覆測試發現如下設定也是能有效觸發-webkit-overflow-scrolling屬性的,具體程式碼如下:

<style>
.content-box{
  height: 500px;/*经过测试后发现只要设定的这个高度小于屏幕高度,-webkit-overflow-scrolling属性也能有效触发*/
  border: solid 1px green;
  overflow: auto;
  -webkit-overflow-scrolling: touch;}
</style>
<body>
<div class="content-box">哎呀我是要滚动的啊<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
有效果的哦。。。
</div>
</body>

當然,以上的版本就得在html渲染結束的時候去改變他的高度,以達到和屏幕高度一致,但是這種方式的維護性太差,後來又找到一種解決方案,具體代碼如下:

<style>
.ios-scroll-father{
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 10rem ;
  height: 100%;}
.ios-scroll-child{
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 10rem ;
  overflow: auto;}
  -webkit-overflow-scrolling touch
</style>
<div class="ios-scroll-father">
<div class="ios-scroll-child">
我要完美解决ios的顺畅滑动问题啊,,,来试试咯。演示,请自己添加代码到超出屏幕内容哦~
</div>
</div>

這裡,要提個醒,設定-webkit-overflow-scrolling屬性的同時要么不要設定height,要么height padding的高度不要超出屏幕的高度,不然你會發現等你滾動到頂部或者底部的時候會被截取掉一部分,需要你在滑動才能出現。 。 。這是個坑啊,本人一不小心設定高度百分百和padding後發現了這種現象,然後找來找去都找不到問題,只能刪減程式碼慢慢排查。

4、當然,如果只是這些問題,那還真是好解決,可是,可是,某天寫了個列表,需要做滾動分頁特效,這時候我去兼聽滾動條的滾動事件,發現scrollTop不會時時更新,要等到頁面停止捲動後才能取得scrollTop值。

5、頁面滾動過程中transition動畫不會執行,大坑啊,如果有解決方案的,請留言告知下,萬分感謝。 。 。

以上,是在開發專案過程中遇到的,結合查找的資料反覆測試得到的結論,如有不對的,歡迎指出。

以上是分享CSS3中-webkit-overflow-scolling的使用心得的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多