【问题标题】:Site scrolling on mobile devices (IOS) JS移动设备上的站点滚动(IOS)JS
【发布时间】:2017-03-21 17:33:25
【问题描述】:

我的父元素带有overflow-y: auto,子元素带有overflow-x: auto。

问题:当你在子元素上开始 touchmove 时,你不能同时滚动父元素。那东西只出现在IOS设备(iphone、ipad..)上。 Android 运行良好。

有什么想法吗?

【问题讨论】:

  • 我也有类似的行为,并使用了这个iscrolljs.com 对我来说就像一个魅力

标签: javascript ios scroll web


【解决方案1】:

问题已解决: 在 child 元素上添加 eventListeners onTouchStart、onTouchMove,然后:

touch_start(e){ this.startY = e.touches[0].clientY; }

touch_move(e){ let parent_scroll = document.getElementsByClassName('parent')[0].scrollTop; if(e.touches[0].clientY > this.startY){ document.getElementsByClassName('parent')[0].scrollTop = parent_scroll - Math.abs(e.touches[0].clientY - this.startY); }else{ document.getElementsByClassName('parent')[0].scrollTop = parent_scroll + Math.abs(e.touches[0].clientY - this.startY); } this.startY = e.touches[0].clientY; }

另外,IOS 需要防止 body 弹跳,所以在 CSS 中:

html, body{ position: fixed; overflow: hidden; }

对于每个滚动元素的惰性滚动添加到 css:

-webkit-overflow-scrolling: touch;

利润!也许这个解决方案会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多