CSS 布局溢出仅在 Div 中滚动
CSS Layout Overflow Scroll only in Div
我似乎无法让这个页面布局为我工作。
我希望黄色 div 可滚动,但不显示超过红色 div。
将页面溢出设置为隐藏会完全禁用滚动。
编辑:为了澄清,我希望橙色突出显示覆盖溢出中的整个宽度。
.page {
background-color: aqua;
padding: 0 32px;
height: 300px;
}
.layout {
background-color: red;
margin: 0 32px;
padding: 16px 32px;
height: 200px;
}
.container {
background-color: yellow;
margin: 0 -32px;
padding: 16px 32px;
white-space: nowrap;
overflow: scroll;
display: inline-block;
}
.highlight {
background-color: orange;
margin: 0 -32px;
padding: 0 32px;
}
<div class="page">
<div class="layout">
<p>
Some Text
</p>
<div class="container">
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="highlight">
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
</div>
</div>
</div>
</div>
另一个编辑:我的挣扎和困惑的一个重要因素是我正在使用 tailwind,而 tailwind 在基础上应用了这个 css 规则:
*,
::before,
::after {
box-sizing: border-box;
}
这导致黄色框总是太短..
添加
.container {
/* ... */
box-sizing: content-box;
}
成功了
容器没有定义的宽度或高度。因此,宽度和高度将计算为 fit-content。仅当容器的 height/width 小于内容时才会发生溢出。
要解决您的问题,您只需将 width: 100%
添加到容器中以填充父级宽度。
.page {
background-color: aqua;
padding: 0 32px;
height: 300px;
}
.layout {
background-color: red;
margin: 0 32px;
padding: 16px 32px;
height: 200px;
}
.container {
background-color: yellow;
margin: 0 -32px;
padding: 16px 32px;
white-space: nowrap;
overflow: scroll;
display: inline-block;
width: 100%;
}
.highlight {
background-color: orange;
margin: 0 -32px;
padding: 0 32px;
width: fit-content;
}
<div class="page">
<div class="layout">
<p>
Some Text
</p>
<div class="container">
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="highlight">
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
</div>
</div>
</div>
</div>
我似乎无法让这个页面布局为我工作。 我希望黄色 div 可滚动,但不显示超过红色 div。 将页面溢出设置为隐藏会完全禁用滚动。
编辑:为了澄清,我希望橙色突出显示覆盖溢出中的整个宽度。
.page {
background-color: aqua;
padding: 0 32px;
height: 300px;
}
.layout {
background-color: red;
margin: 0 32px;
padding: 16px 32px;
height: 200px;
}
.container {
background-color: yellow;
margin: 0 -32px;
padding: 16px 32px;
white-space: nowrap;
overflow: scroll;
display: inline-block;
}
.highlight {
background-color: orange;
margin: 0 -32px;
padding: 0 32px;
}
<div class="page">
<div class="layout">
<p>
Some Text
</p>
<div class="container">
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="highlight">
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
</div>
</div>
</div>
</div>
另一个编辑:我的挣扎和困惑的一个重要因素是我正在使用 tailwind,而 tailwind 在基础上应用了这个 css 规则:
*,
::before,
::after {
box-sizing: border-box;
}
这导致黄色框总是太短.. 添加
.container {
/* ... */
box-sizing: content-box;
}
成功了
容器没有定义的宽度或高度。因此,宽度和高度将计算为 fit-content。仅当容器的 height/width 小于内容时才会发生溢出。
要解决您的问题,您只需将 width: 100%
添加到容器中以填充父级宽度。
.page {
background-color: aqua;
padding: 0 32px;
height: 300px;
}
.layout {
background-color: red;
margin: 0 32px;
padding: 16px 32px;
height: 200px;
}
.container {
background-color: yellow;
margin: 0 -32px;
padding: 16px 32px;
white-space: nowrap;
overflow: scroll;
display: inline-block;
width: 100%;
}
.highlight {
background-color: orange;
margin: 0 -32px;
padding: 0 32px;
width: fit-content;
}
<div class="page">
<div class="layout">
<p>
Some Text
</p>
<div class="container">
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="row">Testline1</div>
<div class="highlight">
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow Overflow
</div>
</div>
</div>
</div>