【发布时间】:2021-03-17 18:02:23
【问题描述】:
我有一个浏览器应用程序可以动态显示比可用屏幕尺寸更短或更长的内容。 在桌面浏览器上,这会导致垂直滚动条出现/消失,从而使内容左右“跳跃”。
为避免这种情况,我将style="overflow-y: scroll" 添加到body 标记中,这会强制滚动条始终显示——如果内容比屏幕短,滚动条就会被禁用。
当我使用material-ui SwipeableDrawer 组件来显示滑动选项菜单时,问题就来了。在浏览器检查器中查看 DOM,似乎material-ui 在显示菜单时主动删除了我在 body 标记上的 overflow-y 样式,但在删除菜单时并没有将其放回原处。
- Example app 在 Netlify 上发布
- Source code
- 下面的屏幕截图显示,当禁用的滚动条可见时,内容最初是稳定的,然后显示菜单显示后内容向左/向右跳跃。
这只发生在桌面上,在 Chrome 和 Firefox 中都可以重现。它不会发生在移动设备(例如 iOS)上,因为移动设备上的滚动条显示在内容的“顶部”。
我不想跟踪 material-ui 正在做什么并添加/删除填充 - 我很确定 material-ui 也对其他组件(弹出器、工具提示等)执行此行为。跟踪所有这些组件并且摆弄填充将容易出错(更不用说乏味了)。
我能否像在移动浏览器中那样让垂直滚动条显示在内容的“顶部”?我必须添加填充以确保没有任何东西被遮挡,但至少它是静态的 - 所以一旦问题得到解决,它就会保持不变。
【问题讨论】:
-
你能不添加填充让你的容器更宽吗?问题是要知道多少。这个 [link] stackoverflow.com/questions/18548465/… 有一些想法,但问题是从一开始就设置它。
标签: html css material-ui