我正在研究基於iPad的網絡應用程序,並且需要防止過度滾動,以使其看起來不像網頁。我目前使用這種凍結視口並禁用反彈時:iOS Safari - 如何禁用overscroll,但允許可滾動的div正常滾動?
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
這個偉大的工程來禁用反彈時,但我的應用程序有幾個滾動的div,並上面的代碼防止它們滾動。
我只針對iOS 5及以上版本,所以我避免了像iScroll這樣的hacky解決方案。相反,我使用這個CSS我可滾動的div:
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
此作品,未經文檔反彈時劇本,但沒有解決的div滾動問題。
沒有一個jQuery插件,有沒有辦法使用反彈時修復,但免除我的$(「滾動」)的div?
編輯:
我發現的東西,是一個不錯的解決方案:
// Disable overscroll/viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
當你滾過div的開頭或結尾的視域依然繼續。我想找到一種方法來禁用它。
嘗試了你的最後一個也沒有工作要麼 – 2012-10-19 11:44:12
我可以保持視口不移動,當你滾動過去的div的末尾,明確捕獲滾動div的父級滾動事件,而不是讓它實際上滾動。如果您使用jQuery Mobile的很有道理在頁面級別,像這樣做:。 $(「DIV [數據角色=‘頁面’]」)上(「滾動」,功能(E){É .preventDefault();}); – 2013-02-18 20:47:35
https://github.com/lazd/iNoBounce創建奇蹟 – 2015-04-25 08:06:52