iOS safari:滚动在位置内被破坏:已修复;元素

12M*_*e21 9 html css scroll mobile-safari ios

在元素内部position: fixed;,如果您尝试在触摸开始时以错误的方式滚动滚动元素,滚动元素将“锁定”。

示例:触摸屏幕并向下拖动,然后向后拖动。该元素不会滚动。如果松开,等待几秒钟,然后尝试向上拖动,它就会滚动。
http://12me21.github.io/scroll-test.html

body {
   position: fixed;
   top: 0;
   bottom: 0;
   left: 0;
   right: 0;
}
#scroll-container {
   overflow-y: scroll;
   height: 100%;
}
#scroller {
   height: 200vh;
   font-size: 50px;
}
Run Code Online (Sandbox Code Playgroud)
<body>
   <div id=scroll-container>
      <div id=scroller>Test<br>more text</div>
   </div>
</body>
Run Code Online (Sandbox Code Playgroud)

这个答案:/sf/answers/3621311851/似乎与我遇到的问题相同,但修复不再有效。它似乎发生在所有固定元素内,并且不再由其引起-webkit-overflow-scrolling: touch;

现在有办法解决这个问题吗?或者我只需要完全避免position: fixed;

12M*_*e21 8

添加或似乎overflow: hidden;可以修复它。 我不确定为什么会这样,但我认为问题是 safari 试图滚动 html/body 而不是你想要的元素。 因为可滚动部分位于元素内部,所以滚动主体没有视觉效果,因此看起来什么也没有发生。<html><body>

position:fixed