【发布时间】:2021-12-21 17:16:28
【问题描述】:
我正在努力完成一项看似简单的任务。
- 在宽屏上,网站应显示 2 列:侧边菜单和内容栏
- 在较小的屏幕上,网页应显示单列,并且现在位于底部的菜单
- 内容应呈现在固定宽度的居中列
- 内容列的背景颜色无论该列中的内容大小如何,都必须始终为全屏高度
我对最后一点有疑问。
示例如下:https://jsfiddle.net/jqdy4w1g/19/
在宽屏幕上,如果向下滚动,您会注意到绿色列的背景没有传播到底部:
在较小的屏幕上同样的问题:
代码sn-p
html,
body {
height: 100%;
color: white;
margin: 0px;
padding: 0px;
}
.c1 {
background-color: rebeccapurple;
}
.c2 {
background-color: rosybrown;
}
.c3 {
background-color: seagreen;
}
.box {
display: flex;
flex-direction: row;
height: 100%;
}
.sidebar {
height: 100%;
min-width: 300px;
/* float: left; */
order: 1;
/* position: sticky;
left: 0;
top: 0; */
overflow-y: auto;
}
.content {
height: 100%;
flex-grow: 1;
order: 2;
overflow-x: auto;
overflow-y: scrollbar;
align-content: center;
justify-content: center;
}
@media (max-width: 576px) {
.box {
flex-direction: column;
/* display: block; */
}
.content {
width: 100%;
height: calc(100% - 80px);
order: 1;
overflow-y: auto;
}
.sidebar {
width: 100%;
order: 2;
height: 80px;
position: sticky;
bottom: 0;
overflow-y: hidden;
overflow-x: auto;
}
}
.contentcolumn {
width: 100%;
max-width: 300px;
margin: auto;
height: 100%;
}
<body>
<div class="box">
<div class="c2 content">
<div id="tag" class="c3 contentcolumn">
Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content,Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content, Content,
</div>
</div>
<div class="sidebar c1">
<ul>
<li>Sidebar</li>
<li>Sidebar</li>
<li>Sidebar</li>
<li>Sidebar</li>
</ul>
</div>
</div>
</body>
css 貌似负责的问题是:
.content {
overflow-y: auto;
}
在这种情况下overflow 是必要的,因为我希望内容无限增长。没有溢出页面开始看起来像这样:
这个问题的“工作方式”解决方案是——如果我从内容列中删除height 100%——那么背景就会开始覆盖文本内容。但是,当页面上没有内容时,它不满足全屏覆盖要求:
完整的例子请检查小提琴。
所以基本上问题是 - 当存在溢出时如何将 div 的内容拉伸到全高。内容列必须始终占据屏幕的整个高度(以及内容/文本)。
【问题讨论】:
-
删除所有内容区域的
height: 100%怎么样? -
不,它不起作用..我已经发布了有效的答案(2个版本 - 1个有内容,1个没有,所以你可以检查我想要达到什么样的结果)
-
@Alex 我根据你提供的新信息调整了我的答案。
标签: html css background overflow