您好,登錄后才能下訂單哦!
小編給大家分享一下CSS3中-webkit-overflow-scolling的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
我們都知道在ios的safari瀏覽器和app內(nèi)核瀏覽器中,當一個h6頁面內(nèi)容超出屏幕高度,我們手指去滑動屏幕的時候,只要手勢一離開屏幕,滾動立刻結(jié)束。這時候我們可以通過設(shè)置-webkit-overflow-scrolling=touch來使頁面可以順暢滾動,但是設(shè)置這個也會引出許多問題。
1、單獨對body設(shè)置-webkit-overflow-scrolling touch是無效的,需要針對html和body同時設(shè)置才有效果,代碼如下:
html,body{ height: 100%; overflow: auto; -webkit-overflow-scrolling: touch; }
2、父容器設(shè)置-webkit-overflow-scrolling=touch后,子容器不允許出現(xiàn)fixed固定的子元素,為什么這么說呢。因為當你設(shè)定-webkit-overflow-scrolling=touch后,你滑動屏幕的時候會發(fā)現(xiàn)fixed屬性失效了,他也跟著屏幕滾動了,只有當滾動停止的時候這個元素才會在固定到頁面上。顯然這不是我們要的結(jié)果。
這里我的解決方法是不把-webkit-overflow-scrolling設(shè)置在body元素上,在需要滾動的地方另外增加div容器去設(shè)定,然后把需要fixed的容器都直接放在body元素內(nèi)。
3、單獨對div設(shè)定-webkit-overflow-scrolling屬性無效,經(jīng)測試后發(fā)現(xiàn),我需要先對父容器div1設(shè)定為有高度的容器,然后在對超出的子容器設(shè)定-webkit-overflow-scrolling屬性具體代碼如下:
<style>.div-p{ width: 100%; height: 500px;/*這是測試值,具體針對項目需求設(shè)置,不要超出子容器內(nèi)容高度*/overflow: hidden;/*設(shè)不設(shè)定這個值對-webkit-overflow-scrolling沒有影響*/} .div-c{ width: 100%; height: 2000px; overflow: auto;/*測試發(fā)現(xiàn)一定要設(shè)定這個值才起作用*/ -webkit-overflow-scrolling: touch;}</style> <div class="div-p"> <div class="div-c">我要滾動啊,,在ios要順暢啊</div> </div>
經(jīng)過反復(fù)測試發(fā)現(xiàn)如下設(shè)置也是能有效觸發(fā)-webkit-overflow-scrolling屬性的,具體代碼如下:
<style> .content-box{ height: 500px;/*經(jīng)過測試后發(fā)現(xiàn)只要設(shè)定的這個高度小于屏幕高度,-webkit-overflow-scrolling屬性也能有效觸發(fā)*/ 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渲染結(jié)束的時候去改變他的高度,以達到和屏幕高度一致,但是這種方式的維護性太差,后來又找到一種解決方案,具體代碼如下:
<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的順暢滑動問題啊,,,來試試咯。演示,請自己添加代碼到超出屏幕內(nèi)容哦~ </div> </div>
這里,要提個醒,設(shè)置-webkit-overflow-scrolling屬性的同時要么不要設(shè)定height,要么height+padding的高度不要超出屏幕的高度,不然你會發(fā)現(xiàn)等你滾動到頂部或者底部的時候會被截取掉一部分,需要你在滑動才能出現(xiàn)。。。這是個坑啊,本人一不小心設(shè)定高度百分百和padding后發(fā)現(xiàn)了這種現(xiàn)象,然后找來找去都找不到問題,只能刪減代碼慢慢排查。
4、當然,如果只是這些問題,那還真是好解決,可是,可是,某天寫了個列表,需要做滾動分頁特效,這時候我去兼聽滾動條的滾動事件,發(fā)現(xiàn)scrollTop不會時時更新,要等到頁面停止?jié)L動后才能獲取到scrollTop值。
5、頁面滾動過程中transition動畫不會執(zhí)行,大坑啊,如果有解決方案的,請留言告知下,萬分感謝。。。
看完了這篇文章,相信你對“CSS3中-webkit-overflow-scolling的示例分析”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。