<!DOCTYPE html>
<html lang="ru">
<head>
<title>Испытание: строим сетку</title>
<meta charset="utf-8">
</head>
<body>
<div class="header">
<div class="layout-positioner">
<div class="header-block">
<span>Header</span>
</div>
</div>
<div class="menu">
<span>Menu</span>
</div>
<div class="layout-positioner">
<div class="layout-column-left">
<div class="promo">
<span>Promo 1</span>
</div>
</div>
<div class="layout-column-right">
<div class="promo">
<span>Promo 2</span>
</div>
</div>
</div>
</div>
<div class="features">
<div class="layout-positioner">
<div class="layout-column-left">
<div class="feature">
<span>Left</span>
</div>
</div>
<div class="layout-column-main">
<div class="feature">
<span>Main</span>
</div>
</div>
<div class="layout-column-right">
<div class="feature">
<span>Right</span>
</div>
</div>
</div>
</div>
<div class="footer">
<div class="footer-block">
<span>Footer</span>
</div>
</div>
</body>
html,
body {
margin: 0;
padding: 0;
}
body {
width: 450px;
height: 335px;
font-family: "Arial", sans-serif;
font-size: 10px;
color: white;
}
.layout-positioner {
width: 350px;
margin: 0 auto;
/*border: 1px dashed yellow;*/
}
.layout-positioner::after {
content: "";
display: table;
clear: both;
}
.header {
padding: 10px 0;
background-color: #34495e;
}
.header-block {
float: left;
width: 350px;
min-height: 35px;
background-color: #c0392b;
}
.menu {
min-height: 35px;
background-color: #3498DB;
margin: 10px 0;
padding: 5px;
box-sizing: border-box;
}
.promo {
float: left;
width: 170px;
min-height: 60px;
background-color: #c0392b;
margin-right: 10px;
}
.header .layout-column-right .promo {
margin-right: 0;
}
.features {
padding: 10px 0;
}
.features .layout-column-left {
float: left;
width: 70px;
min-height: 110px;
background-color: #3498DB;
}
.features .layout-column-main {
float: left;
width: 190px;
min-height: 110px;
margin: 0 10px;
background-color: #3498DB;
}
.features .layout-column-right {
float: right;
width: 70px;
min-height: 110px;
background-color: #3498DB;
}
.footer-block {
min-height: 35px;
padding: 5px;
background-color: #34495e;
box-sizing: border-box;
}
span {
display: block;
margin: 5px 0 0 5px;
}
.menu span,
.footer-block span {
margin: 0 0 0 50px;
}
Одну вещь я не до конца понимаю. Если убрать у .header-block флоат, то получается вот что. Для наглядности я добавил рамки .layout-positioner.
Tala
3
это внешний отступ <span>
в 5 px вылез.
кто виноват и что делать - смотрим раздел Блочная модель документа / «Выпадание» внешних отступов [10/23]
1 лайк
А как код в целом?
От выпадания span без флоата .header-block я избавился следующим образом:
.header-block {
padding-top: 5px;
box-sizing: border-box;
}
.header-block span {
margin: 0 0 0 5px;
}
Ineska
5
Всё хорошо, кроме:
Здесь тоже должен быть центровщик .layout-positioner.
Обернуть в него span’ы .menu и .footer-block?
<div class="menu">
<div class="layout-positioner">
<span>Menu</span>
</div>
</div>
Вот так?
Прошла на 100%. Может есть замечания? Заранее спасибо.
CSS
html,
body {
margin: 0;
padding: 0;
}
body {
width: 450px;
height: 335px;
font-family: "Arial", sans-serif;
font-size: 10px;
color: white;
}
.header-full {
background: #34495e;
padding: 5px 0 0 0;
}
.pozision {
width: 350px;
margin: 0 auto;
}
.after {
display: table;
content: "";
clear: both;
}
.header, .menu {
min-height: 25px;
padding: 5px;
margin: 5px 0 10px 0;
}
.header {
background: #c0392b;
}
.menu-full {
background: #3498DB;
}
.promo1, .promo2 {
background: #c0392b;
width: 160px;
min-height: 50px;
padding: 5px;
}
.promo1 {
float: left;
margin-bottom: 10px;
}
.promo2 {
float: right;
}
.left, .main, .right {
background: #3498DB;
width: 60px;
min-height: 100px;
padding: 5px;
margin: 10px 0;
}
.left {
float: left;
}
.main {
float: left;
width: 180px;
margin: 10px;
}
.right {
float: right;
}
.footer-full {
background: #34495e;
min-height: 35px;
padding: 5px 0 0 10px;
}
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Испытание: строим сетку</title>
<meta charset="utf-8">
</head>
<body>
<div class="header-full">
<div class="pozision">
<div class="header">Header</div>
</div>
<div class="menu-full">
<div class="pozision">
<div class="menu">Menu</div>
</div>
</div>
<div class="pozision after">
<div class="promo1">Promo 1</div>
<div class="promo2">Promo 2</div>
</div>
</div>
<div class="pozision after">
<div class="left">Left</div>
<div class="main">Main</div>
<div class="right">Right</div>
</div>
<div class="footer-full">
<div class="pozision">Footer</div>
</div>
</body>
</html>
Ineska
10
Свойство content в правиле говорит о том, что это псевдоэлемент. Псевдоэлемент пишется с двумя двоеточиями в начале.
В вашем случае это должно быть:
.pozision::after {
display: table;
content: "";
clear: both;
}
При этом в html-коде класс after писать не надо. Распорка и так появится в каждом блоке с классом .pozision.