【发布时间】:2016-11-10 17:47:42
【问题描述】:
我正在尝试安排一个布局,其中我有一个右侧栏,在主要内容区域的左侧,我有一个水平排列的固定宽度的项目列表。
这些有多种数量,当它们超出允许的空间时,我希望出现一个水平滚动条。
碰巧,这个列表中的每个项目还包含一个标题和一个可能垂直溢出的子项目列表。这也需要一个滚动条。
以下 jsbin 显示了我正在尝试的内容,但在水平排列时失败了。不幸的是,在滚动条出现之前,侧边栏会被压扁到很小的宽度。此外,很明显,当我的主标题开始滚动时,整个视口都会获得水平滚动条。
https://jsbin.com/qametad/edit?html,css,output
我怎样才能得到它,所以带有“s”类的区域(参见 jsbin)是水平滚动的区域? (它不一定是“s”,我最初尝试让“ic”滚动但失败了,所以添加了“s”来尝试将弯曲和滚动分开)。
body {
fullbleed height: 100vh;
}
.h {
display: flex;
flex-direction: row;
justify-content: center;
height: 30px;
}
.m {
display: flex;
flex-direction: row;
height: calc(100vh - 50px);
border: 1px solid green;
}
.ic {
display: flex;
flex: 1;
}
.s {
display: flex;
flex-direction: row;
border: 1px solid red;
width: 100%;
overflow-x: auto;
}
.i {
display: flex;
flex-direction: column;
width: 150px;
border: 1px solid rebeccapurple;
margin: 1px
}
.ih {
height: 50px;
self-align: center;
border: 1px solid orange;
}
.il {
margin: 1px;
border: 1px solid black;
overflow-y: auto;
}
.li {
height: 60px;
margin: 3px;
border: 1px solid lawngreen;
}
.sb {
display: flex;
flex-direction: column;
justify-content: center;
margin: 2px;
border: 1px solid blue;
}
<header class="h">My Heading</header>
<section class="m">
<div class="ic">
<div class="s">
<div class="i">
<header class="ih">Item Header</header>
<section class="il">
<div class="li">A</div>
<div class="li">B</div>
<div class="li">C</div>
</section>
</div>
<div class="i">
<header class="ih">Item Header</header>
<section class="il">
<div class="li">A</div>
<div class="li">B</div>
<div class="li">C</div>
<div class="li">C</div>
<div class="li">C</div>
<div class="li">C</div>
<div class="li">C</div>
<div class="li">C</div>
<div class="li">C</div>
</section>
</div>
<div class="i">
<header class="ih">Item Header</header>
<section class="il">
<div class="li">A</div>
<div class="li">B</div>
<div class="li">C</div>
</section>
</div>
<div class="i">
<header class="ih">Item Header</header>
<section class="il">
<div class="li">A</div>
<div class="li">B</div>
<div class="li">C</div>
</section>
</div>
<div class="i">
<header class="ih">Item Header</header>
<section class="il">
<div class="li">A</div>
<div class="li">B</div>
<div class="li">C</div>
</section>
</div>
</div>
</div>
<section class="sb">
<div class="sbc">Some Content</div>
</section </section>
【问题讨论】: