首页 > 解决方案 > 移动 webapp:决定是否在触摸开始后阻止 visualViewport 滚动

问题描述

在移动网页中,我们可以使用以下 css(以每个元素为基础)设置 visualViewport 是否会基于 touch-and-slide 滚动:

.element-receiving-slide-touch {
    touch-action: none | manipulation;
}

但是,要使其正常工作,必须在第一个 touchstart 事件发生之前设置它。在 touchstart 事件监听器中设置它只会影响触摸屏释放后的下一个手势。

在我的应用程序中,根据被触摸的点,需要防止滚动,因为会发生另一个动作,这需要保持滚动固定。在 touchstart 发生后,我需要将逻辑冻结或不冻结 visualViewport。

有什么方法可以防止在触摸手势期间滚动到 visualViewport?我已经测试了 preventDefault() 和 stopPropagation(),但没有成功。

关于viewport和visualViewport还是有混淆的,所以有一些链接可以避免对问题的误解:

https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport

https://developers.google.com/web/updates/2017/09/visual-viewport-api

标签: mobilescrollviewport

解决方案


推荐阅读