我有一个2乘2的CSS网格,使用固定位置填充浏览器视口。它看起来像这样:
-----------------
| |xxxxxxxxxxxxx|
-----------------
|x| |
|x| |
|x| |
|x| |
-----------------
顶部一行和左列都意味着适合其内容,大小为auto
。底部行和右列都将占用所有剩余空间,大小为1fr
。
图中用X填充的东北单元格和西南单元格都是可滚动的Flex父级。它们包含任意数量的子元素,并且该数量可以动态更改。我将每一个的overflow
属性设置为auto
,并使用以下规则集设置滚动条的样式:
.scrollable::-webkit-scrollbar {
height: 10px;
width: 10px;
}
.scrollable::-webkit-scrollbar-thumb {
background: darkgray;
}
.scrollable::-webkit-scrollbar-track {
background: #666666;
}
当我在macOS上的Chrome中加载页面时,滚动条覆盖在西南单元格的内容上。然后,当我调整浏览器窗口的大小时,左列会扩展以容纳滚动条(它已经显示为覆盖),并且它会移动到内容的右侧。
我更喜欢滚动条不要覆盖所有的内容,我真的很想消除一个不相关的调整大小事件的布局转移。你知道我如何实现这些目标吗?
这个Codepen是一个最小的可重复的例子。然而,它的行为对我来说并不一致。当我重新加载页面时,有时滚动条被覆盖,有时列已经足够宽,滚动条可以出现在内容的右边。我在这个standalone page上看到了更一致的糟糕的覆盖和大小调整。
1条答案
按热度按时间kq0g1dla1#
为了防止这种情况,网格需要更新其维度并考虑滚动条。另一个问题是如何只使用css。我想到将
animation
应用于grid-template-columns
,它似乎可以工作: