It appears that on iOS 14.5 in Safari (haven't tested in Chrome), overflow: hidden is ignored if the user is focused in an input field. Now, you can add a touch-action: none to the body element and that works in some situations, but it's a hack (it doesn't actually disable scrolling) and that attribute is also ignored if there's a child element with overflow: auto AND is not scrollable. The issue is easily replicate-able:
- Open the following code in an iOS Safari window:
body,
html {
touch-action: none;
overflow: hidden;
}
.test {
height: 100000px;
}
.test-inner {
overflow: auto;
height: 400px;
width: 100%;
}
<div class="test">
<div class="test-inner">
<input type="text">
</div>
</div>(note: adding height: 100% to body makes no difference)
- Try to scroll by dragging in the green div area and you'll notice that you can't because the
overflow: hiddenis behaving as expected. - Tap into the input field to focus it and you'll notice that you now can scroll as if
overflow: hiddenandtouch-action: noneis now being totally ignored.
Has anyone else run into this issue? If so, have you found a non-JS solution to it?
from iOS Safari Ignores Body Overflow: Hidden when Input Focused
No comments:
Post a Comment