Встретился с проблемой: когда у всех дочерних элементов указал float, то у родителя потерялась высота, т.е. ушла в 0px.
Пример:
.parent {
width: 162px;
border: 2px solid red;
}
.children {
width: 50px;
height: 50px;
border: 2px solid blue;
float: left;
}
Почему родитель перестал учитывать высоту дочерних элементов? Как исправить?
Ответ
Родитель перестал учитывать высоту дочерних элеметов потом, что элементы с float создают новый контекст наложения и выпадают из потока элементов.
Есть четыре варианта решения вашего вопроса:
Если у всех дочерних элементов фиксированная высота, то и у родителя указываем фиксированную высоту:
.parent {
width: 162px;
border: 2px solid red;
/* Фиксированная высота */
height: 54px;
}
.children {
width: 50px;
height: 50px;
border: 2px solid blue;
float: left;
}
.parent { width: 162px; border: 2px solid red; } .children { width: 50px; height: 50px; border: 2px solid blue; float: left; } /* Clearfix */ .clearfix { display: table; clear: both; visibility: hidden; } .parent.b:after { content: ''; display: table; clear: both; visibility: hidden; }
С элементом:
С псевдоэлементом:
.parent { width: 162px; border: 2px solid red; /* Float */ float: left; } .children { width: 50px; height: 50px; border: 2px solid blue; float: left; }
.parent { width: 162px; border: 2px solid red; /* Overflow */ overflow: auto; /* Можно устанавливать следущие значения: auto, hidden, overlay, scroll */ } .children { width: 50px; height: 50px; border: 2px solid blue; float: left; }
Комментариев нет:
Отправить комментарий