当我添加溢出时,我的无序列表消失了

时间:2016-06-09 20:38:01

标签: html css html-lists

我正在搞乱溢出,我注意到当我为代码创建顶部包装器时,我的列表消失了。



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;
&#13;
&#13;

获取列表的唯一方法是将display属性absolute添加到CSS类.top-wrapper

有谁知道为什么这是默认行为?我正在寻找详细的解释。

JSFfiddle Demo

position: absolute添加到.top-wrapper以显示它。

1 个答案:

答案 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>