发布于 2026-01-06 3 阅读
0

可滚动布局,高度 100% 方法一:使用 CSS 定位;方法二:使用 CSS 网格

可滚动布局,高度 100%

方法一:使用 CSS 定位:

方法二:使用 CSS Grid

大家好👋🏼,各位网友。今天,我要分享一个我在创建可滚动动态高度布局时经常忘记的CSS技巧。最近,我在开发一个类似下图的基本布局。我花了好一会儿才想起来这个技巧,但一旦想起,就感觉似曾相识,很快就完成了布局。

实现这一目标有两种方法:

方法一:使用 CSS 定位:

如果你看一下上面的代码,就会明白我的意思了。正如你所看到的,布局容器内包含了导航栏 (NAVBAR)、面包屑导航栏 (BREADCRUMB BAR)、主区域 (MAIN SECTION) 和页脚 (FOOTER),高度为height: 100vh。我希望主区域的侧边栏和内容框可以滚动。

我可以将高度设置为固定值,类似height: 800px这样overflow-y: scroll,但这样一来,实现响应式布局就会变成一场噩梦。

那么问题来了🤔。如何将该overflow-y: scroll属性应用于高度为100%的div元素呢?

position: relative这里的解决方案使用position: absolute.overflow-y: scroll

.main {
position: relative;
height: 100%;
}

.sidebar {
position: absolute; 
top: 0;
left: 0;
bottom: 0;  /*stretch from top to bottom w.r.t .main section*/
width: 10rem;
overflow-y: scroll;
}

.content {
position: absolute;
top: 0;
left: 10rem;
bottom: 0;
right: 0; /* stretch from top to bottom, and shift 10rem from left and stretch till right */
overflow-y: scroll;
}
Enter fullscreen mode Exit fullscreen mode

实现这个目标还有很多其他方法。这只是我常用的一个技巧。如果你有其他方法,请留言(我非常乐意学习)。恭喜你读完这篇文章!希望对你有所帮助。谢谢!

很多朋友都建议可以用一种巧妙的方法来实现这个功能,而无需使用 CSS 定位。所以我又添加了一个使用 CSS 网格布局的解决方案。

方法二:使用 CSS Grid

文章来源:https://dev.to/null-rider-404/scrollable-div-layout-with-height-100-33jn