pan*_*her 194
设置height和overflow:
html, body {margin: 0; height: 100%; overflow: hidden}
Run Code Online (Sandbox Code Playgroud)
小智 16
HTML css工作正常,如果body标签没有做任何你也可以写的东西
<body scroll="no" style="overflow: hidden">
Run Code Online (Sandbox Code Playgroud)
在这种情况下,覆盖应该在身体标签上,它更容易控制,但有时会让人头疼.
小智 12
这篇文章很有帮助,但只是想分享一个可以帮助他人的轻微替代方案:
设置max-height而不是height也可以.就我而言,我基于类切换禁用滚动..someContainer {height: 100%; overflow: hidden;}当容器的高度小于视口的高度时设置会拉伸容器,这可能不是您想要的.max-height为此设置帐户,但如果容器的高度大于内容更改时的视口,则仍会禁用滚动.
Mar*_*und 11
useEffect来救援!
function useImperativeDisableScroll({ element, disabled }) {
useEffect(() => {
if (!element) {
return
}
element.style.overflowY = disabled ? 'hidden' : 'scroll'
return () => {
element.style.overflowY = 'scroll'
}
}, [disabled])
}
Run Code Online (Sandbox Code Playgroud)
你可以使用它,例如
useImperativeDisableScroll({ element: document.body, disabled: true })
Run Code Online (Sandbox Code Playgroud)
根据您的用例,您可能会更幸运
useImperativeDisableScroll({
element: document.scrollingElement,
disabled: true
})
Run Code Online (Sandbox Code Playgroud)
但请注意,在撰写本文时,您可能需要进行 polyfill document.scrollingElement。
有用的链接:
小智 11
当您需要为 Web 应用程序创建弹出组件时,还有另一种方便的方法可以禁用滚动,而无需动态更改 body 元素。首先,添加此样式:
body:has(.requires-no-scroll) {
overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)
然后,当您创建/打开任何弹出窗口时,只需将此类添加到其中,它的存在将自动阻止滚动(并在删除弹出窗口时取消阻止它):
<div class="popup requires-no-scroll">
...
</div>
Run Code Online (Sandbox Code Playgroud)
当您基于某些反应性布尔变量显示弹出窗口时,这对于反应式应用程序很有用:滚动本身会阻止并且您不需要执行任何其他操作。
bvd*_*vdb 10
为此,请在<body>元素上添加 2 个 CSS 属性。
body {
height: 100%;
overflow-y: hidden;
}
Run Code Online (Sandbox Code Playgroud)
现在有许多新闻网站要求用户创建一个帐户。通常,他们会授予对该页面的完全访问权限大约一秒钟,然后他们会显示一个弹出窗口,并阻止用户向下滚动。
此外,一些网站(例如 Quora)也会使部分文本变得模糊。通常,他们通过应用以下 CSS 来做到这一点。
filter: blur(3px);
Run Code Online (Sandbox Code Playgroud)