css - -webkit-溢出 : touch; stops working when tapping on element outside of scroll container

标签 css scroll overflow touchmove

我在 iphone 上有一个非常大的错误,导致页面无法使用,我无法解决它。我也找不到关于这个问题的任何话题。

我有以下屏幕:

enter image description here

中间有一个div,设置了-webkit-overflow: auto;,让div里面滚动流畅。滚动工作非常顺利。

但是 直到我在此 div 之外的另一个元素上执行 touchmove。如果我这样做并尝试再次滚动 scrollcontainer,它会被卡住并且根本不会移动。在滚动容器上轻敲几次后,它又开始滚动了。 它正在失去滚动容器的滚动焦点并试图滚动父级。

所以,如果我做这样的 Action :

enter image description here

这看起来像这样:

enter image description here

注意:我只是从底部容器到溢出 div 中进行了一次触摸移动。松开手指后再次尝试滚动,它仍然滚动父 div。

我做了一个简短的例子,所以你可以用你的iphone/phone看看here .

只有在使用 -webkit-overflow: auto 时才会出现此问题 对于正常的 overflow: scroll 它总是有效但是是的......你知道这种滚动感觉有多滞后。

当您使用 -overflow-scrolling: touch; 单击/点击容器时,是否有任何方法可以强制将滚动焦点置于所需的容器中?

最佳答案

iOS Safari 浏览器从未真正让您完全控制滚动。 但是,您可以使用“hack”,它需要 JS:

  • body,html上设置position: fixed
  • 一旦 touchmove 发生,设置 body.scrollTop = 0 所以在你的情况下添加:

CSS

body, html {
  margin: 0;
  position: fixed;
}

JS

document.addEventListener('touchmove',function (){
  document.body.scrollTop = 0
})

Example page for testing on device

顺便说一句,处理这个问题的更好方法是固定标题/控件并向滚动容器添加填充。这不需要任何 JS。 try it

关于css - -webkit-溢出 : touch; stops working when tapping on element outside of scroll container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48873171/

相关文章:

iPhone UITableView 错误??? -sectionIndexTitlesForTableView 似乎是造成的?

css - 溢出使 flexbox 无响应

css - 为什么我在这个 div 中得到滚动条?

javascript - 将字体限制为某种语言

CSS @导入 "~materlize-css"|使用 Webpack |没有制作风格

jQuery 窗口滚动事件不触发

java - 为什么byte的最大值加一,却没有溢出

html - 图像的高度和宽度不会在 CSS 中改变

css - 带有页眉和页脚以及 100% 内容 div 的网页

reactjs - 如何制作一个可滚动组件,当我附加子组件时自动滚动到最新的子组件?