css - 解决出现滚动条时的画面跳转

标签 css reactjs

我有一个模态弹出窗口,当模态出现在屏幕上时,我用 overflow: hidden 消除了滚动条。

我正在使用 js 来计算滚动条的宽度,并添加一个 padding 来修复滚动条消失时的移动屏幕。像这样:

<div className='site-layout-wrapper' style={{'padding-right': modal ? `${scrollbarWidth}px` : '0'}}>

问题是当滚动条重新出现时也有轻微的偏移。我该如何解决?

最佳答案

不要使用 padding-right 因为滚动条的宽度取决于浏览器。您可以做的是将 container 设置为 overflow: scroll; 但将 content 设置为 overflow: hidden; .这将导致滚动条始终显示,但在模式打开时禁用滚动。

例子:

在你的.css中:

body {
    overflow-y: scroll;
}

.site-layout-wrapper.modal-active {
    overflow-y: hidden;
    max-height: 100vh;
}

在你的 .jsx 中:

<div className={`site-layout-wrapper ${modal && 'modal-active'}`}>

关于css - 解决出现滚动条时的画面跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412933/

相关文章:

html - div 顶部的异常空间

javascript - 按键调用功能上的jquery触发器

css - 复杂的 css 只选择元素的第一个实例

reactjs - 无效的钩子(Hook)调用错误,但一切似乎都很好

javascript - 如何在元素的单击时将 id 从一个组件传递到另一个组件

css - 从什么时候开始绝对定位元素会增长文档

css - 为什么这些 div 相互排斥?

ReactJS 和 DRF : How to store JWT token inside HTTPonly cookies?

javascript - reactjs 获取 PUT 值并将值传递给状态

reactjs - 如何以 useContext 作为依赖项正确使用 useEffect