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