我有一个网站与中心对齐的DIV。现在,一些页面需要滚动,一些不需要。当我从一种类型移动到另一种类型时,滚动条的出现将页面移向一侧几个像素。有没有什么方法可以避免这种情况,而不显式地在每个页面上显示滚动条?
当前回答
使用calc(100vw - 100%)发布的解决方案是正确的,但有一个问题:即使你调整了窗口的大小,使内容充满了整个视口,你也将永远有一个滚动条大小的左边边距。
如果你试图用媒体查询来解决这个问题,你会有一个尴尬的瞬间,因为当你调整窗口大小时,边缘不会逐渐变小。
这里有一个解决方案,AFAIK没有任何缺点:
而不是使用margin: auto来居中你的内容,使用这个:
body {
margin-left: calc(50vw - 500px);
}
将500px替换为内容max-width的一半(所以在这个例子中,内容max-width是1000px)。现在内容将保持居中,边距将逐渐减少,直到内容填满视口。
为了防止边距在视口小于max-width时变为负值,只需添加一个媒体查询,如下所示:
@media screen and (max-width:1000px) {
body {
margin-left: 0;
}
}
就是这样!
其他回答
我的方法是使轨道透明。滚动条拇指颜色为#C1C1C1,以匹配默认的滚动条拇指颜色。你可以做任何你喜欢的东西:)
试试这个:
html {
overflow-y: scroll;
}
body::-webkit-scrollbar {
width: 0.7em;
background-color: transparent;
}
body::-webkit-scrollbar-thumb {
background: #C1C1C1;
height:30px;
}
body::-webkit-scrollbar-track-piece
{
display:none;
}
扩展Rapti的答案,这应该是一样的工作,但它增加了更多的边距正文的右侧,并隐藏它与负html边距,而不是增加额外的填充,可能会影响页面的布局。这样,实际页面(在大多数情况下)不会发生任何更改,代码仍然具有功能。
html {
margin-right: calc(100% - 100vw);
}
body {
margin-right: calc(100vw - 100%);
}
我知道这个问题很老了,但是有一个更好的新方法。
scrollbar-gutter: stable;
像这样简单地设置容器元素的宽度就可以了
width: 100vw;
这将使该元素忽略滚动条,并与背景颜色或图像一起工作。
我试过溢出滚动,但它不适合我的情况。滚动条仍然添加了一些(白色)填充。有效的方法是将宽度从100vw更改为100%,但对于高度,可以使用100vh。所以这个:
const Wrapper = styled.div`
min-height: 100vh
`
const Parent = styled.div`
width: 100%
`
const Children = styled.div`
width: 100%
`
编辑 我设置了两次宽度,因为父组件包含侧边栏,而子组件包含侧边栏。根据您的用例,您可以设置一次。
推荐文章
- 使伸缩项目正确浮动
- 如何取消最大高度?
- 形式内联内的形式水平在twitter bootstrap?
- 自定义元素在HTML5中有效吗?
- 如何选择在最后一个子元素之前的元素?
- 如何触发自动填充在谷歌Chrome?
- CSS变换,锯齿边缘在铬
- 创建圈div比使用图像更容易的方法?
- 强迫孩子服从父母的弯曲边界在CSS
- 为什么Chrome浏览器不正确地确定页面是在不同的语言,并提供翻译?
- 在CSS中@apply是什么?
- 在网页上用鼠标模拟震颤(例如帕金森病)?
- Bootstrap抛出Uncaught错误:Bootstrap的JavaScript需要jQuery
- 如何改变文本区域的边框颜色:焦点
- 我如何设置背景颜色为文本的宽度,而不是整个元素的宽度,使用CSS?