CSS vh和vw:为什么我的div与它上面的div重叠?

时间:2015-01-11 13:49:16

标签: html css clearfix

在下面的SSCCE中,为什么#sliderArea div与其上方的#topBar div重叠,而div是块级元素?

我预计它会显示在#topBar下面?

JsFiddle here.

#left-div {
  float: left;
}
#right-div {
  float: right;
}
a {
  margin: 10px;
}
#topBar {
  width: 100%;
}
#sliderArea {
  background-color: yellow;
  width: 100vw;
  height: 100vh;
}
#four-cols {
  margin: 5px 100px 5px 100px;
}
#col-one {
  background-color: orange;
  height: 125px;
  width: 100px;
  display: inline-block;
}
#col-two {
  background-color: blue;
  height: 125px;
  width: 100px;
  display: inline-block;
}
#col-three {
  background-color: green;
  height: 125px;
  width: 100px;
  display: inline-block;
}
#col-four {
  background-color: red;
  height: 125px;
  width: 100px;
  display: inline-block;
}
<div id="topBar">
  <div id="left-div">
    <a href="#">Login</a>
  </div>
  <div id="right-div">
    <a href="#">Menu One</a>
    <a href="#">Menu Two</a>
  </div>
</div>
<div id="sliderArea"></div>
<div id="four-cols">
  <div id="col-one"></div>
  <div id="col-two"></div>
  <div id="col-three"></div>
  <div id="col-four"></div>
</div>

4 个答案:

答案 0 :(得分:4)

您需要清除float s:

div{ clear:both; }

JSFiddle

或仅适用于#sliderArea元素:

JSFiddle

答案 1 :(得分:2)

添加到您的CSS:

#topBar {
width: 100%;
overflow: hidden;
}

通过将 overflow:hidden 添加到浮动元素的包装中,浏览器可以计算它的高度。

答案 2 :(得分:2)

由于孩子的float,您需要添加

#topBar {
 width: 100%;
 overflow: hidden; <-- add this
}

#topBar {
 width: 100%;
 display: inline-block; <-- add this
}

clear floats

演示 - http://jsfiddle.net/qbx5vwy5/6/

答案 3 :(得分:1)

您可以添加清除您想要清除的位置。 JSFiddle

.clear {
    clear: both;
}

当你不清除浮子时,它们会粘在一起。通过添加清除,您将停止浮动并在必要时启动“新”浮动:)