我正在搞乱溢出,我注意到当我为代码创建顶部包装器时,我的列表消失了。
body {
font-size: 36px;
overflow: hidden;
font-family: "Arial";
}
ul {
list-style-type: none;
}
li {
transition: color 0.2s ease;
}
li:hover {
color: red;
}
h1,h2 {
color: lightcoral;
}
.left,.right {
position: relative;
text-align: center;
display: inline-block;
width: 50%;
height: 100vh;
}
.right {
float: right;
background-color: lightgreen;
}
.left {
float: left;
background-color: lightblue;
}
.top-wrapper {
width: 100%;
}
.top-menu {
background-color: darkgreen;
height: 30px;
}
.sub-top-l,.sub-top-r {
display: inline-block;
width: 50%;
height: 20px;
font-size: 12px
}
.sub-top-l {
float: left;
background-color: darkblue;
}
.sub-top-r {
float: right;
background-color: darkred;
}
.list-wrap {
overflow-y: auto;
height: 100%;
}

<div class="content-wrapper">
<div class="left">
<h1>Cowabunga</h1>
</div>
<div class="right">
<div class="top-wrapper">
<div class="top-menu">
</div>
<div class="sub-top-l">
test
</div>
<div class="sub-top-r">
test
</div>
</div>
<div class="list-wrap">
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
</div>
</div>
</div>
&#13;
获取列表的唯一方法是将display属性absolute添加到CSS类.top-wrapper
。
有谁知道为什么这是默认行为?我正在寻找详细的解释。
将position: absolute
添加到.top-wrapper
以显示它。
答案 0 :(得分:1)
目前我不能写出一个很好/详细的解释,但长话短说,这是因为浮点数如何工作(它们位于正常流量中然后移出它以便最远地浮动在它们指定的方向上的边缘)并且因为你没有清除浮动元素的兄弟元素,.list-wrap
div。
清除一个元素将告诉行中的下一个元素(在这种情况下,.list-wrap
移动到一个新行,而不是尝试环绕浮动元素。
position: absolute;
可以正常工作,因为它告诉一个元素,无论你告诉它,相对于最近的position: relative;
祖先(如果有的话),绝对可以显示。
这是一个清除该元素的最小演示:
.right {
width: 50%;
height: 100vh;
background-color: lightgreen;
}
.sub-top-l, .sub-top-r {
width: 50%;
}
.sub-top-l {
float: left;
}
.sub-top-r {
float: right;
}
.list-wrap {
overflow-y: auto;
clear: left;
}
<div class="content-wrapper">
<div class="right">
<div class="top-wrapper">
<div class="sub-top-l">
test
</div>
<div class="sub-top-r">
test
</div>
</div>
<div class="list-wrap">
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
</div>
</div>
</div>
这是一个关闭了该元素的页面演示:
body {
font-size: 36px;
overflow: hidden;
font-family: "Arial";
}
ul {
list-style-type: none;
}
li {
transition: color 0.2s ease;
}
li:hover {
color: red;
}
h1,h2 {
color: lightcoral;
}
.left,.right {
position: relative;
text-align: center;
display: inline-block;
width: 50%;
height: 100vh;
}
.right {
float: right;
background-color: lightgreen;
}
.left {
float: left;
background-color: lightblue;
}
.top-wrapper {
width: 100%;
}
.top-menu {
background-color: darkgreen;
height: 30px;
}
.sub-top-l,.sub-top-r {
display: inline-block;
width: 50%;
height: 20px;
font-size: 12px
}
.sub-top-l {
float: left;
background-color: darkblue;
}
.sub-top-r {
float: right;
background-color: darkred;
}
.list-wrap {
overflow-y: auto;
clear: left;
height: 100%;
}
<div class="content-wrapper">
<div class="left">
<h1>Cowabunga</h1>
</div>
<div class="right">
<div class="top-wrapper">
<div class="top-menu">
</div>
<div class="sub-top-l">
test
</div>
<div class="sub-top-r">
test
</div>
</div>
<div class="list-wrap">
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
</div>
</div>
</div>