【问题标题】:Javascript for iOS: Elastic Scrolling without disabling all Scrolling [duplicate]适用于 iOS 的 Javascript:弹性滚动而不禁用所有滚动 [重复]
【发布时间】:2012-02-29 11:48:44
【问题描述】:

我想做两件事:

  1. 禁用文档的弹性滚动
  2. 启用div.master的滚动

我知道您可以使用以下方法禁用弹性滚动:

document.addEventListener('touchmove',function(e) { e.preventDefault() },false);

但是,这会禁用所有滚动,而不仅仅是弹性滚动。我想也许你可以只为 div.master 再次启用滚动,但我不确定你会怎么做。

【问题讨论】:

  • 据我所知,没有内置的解决方案。您将需要创建自己的算法或下载预制算法。还是您已经在使用库?

标签: javascript ios scroll


【解决方案1】:

禁用页面的默认滚动:

document.body.ontouchmove = function(e) { e.preventDefault(); }; 

或

document.body.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);

并使用一些 CSS 启用滚动:

.scrolling {
   overflow: auto;
   -webkit-overflow-scrolling: touch;
}

要完全消除弹性滚动,您必须将滚动 div 包裹在另一个滚动 div 中,如下所示:

<div class="scrolling">
  <div class="scrolling">
    // Your content goes here
  </div>
</div>

【讨论】:

  • 这个答案在IOS7中不起作用
【解决方案2】:

好吧,我完全不知道,但iScroll 做到了。要获得更好的 iScroll 版本,请使用 iScroll 4。

哦,是的,在检查了 AnonyMouse 之后,我建议不要使用 position: fixed;,因为只有 iOS 5 支持它。

【讨论】:

    【解决方案3】:

    据我所知,您必须使用 preventDefault() 完全阻止 IOS 上的默认页面滚动,然后在不反弹的情况下模仿该行为。如上所述,iscroll 是这样做的,但是与Zynga Scroller等其他库相比,它有点臃肿和繁琐。

    您也可以尝试构建自己的游戏来获得更多乐趣:

    http://www.html5rocks.com/en/mobile/optimization-and-performance/

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 2014-07-14
      • 2012-02-24
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多