CSS vh и vw: Почему мой div совпадает с div над ним?
В следующем SSCCE, почему #sliderArea
div перекрывают #topBar
Div над ним, в то время как div
такое элемент уровня блока?
Я ожидал, что он появится ниже #topBar
?
#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 ответа
Решение
2015-01-11 13:52
Потому что float
из детей вам нужно будет добавить
#topBar {
width: 100%;
overflow: hidden; <-- add this
}
или же
#topBar {
width: 100%;
display: inline-block; <-- add this
}
который будет clear
floats
Добавьте к своему CSS:
#topBar {
width: 100%;
overflow: hidden;
}
Добавив overflow: скрытый в обертку плавающих элементов, браузер может рассчитать ее высоту.
Вы можете добавить очистить, где вы хотите их очистить. JSFiddle
.clear {
clear: both;
}
Когда вы не очищаете поплавки, они просто слипаются. Добавив clear, вы остановите и начнете "новый" float, если это необходимо:)