27/32 Большой код(((

Привет всем!
помогите с кодом. написал но уверен, что можно сократить в разы и оптимизировать. Пока 95%… Заранее благодарен!

<!DOCTYPE html>
<html lang="ru">
    <head>
        <title>Испытание: строим сетку</title>
        <meta charset="utf-8">
    </head>
    <body>
    <div class="container">
            <div class="header">Header</div>
            <div class="menu clearfix">Menu</div>
            <div class="promo promo1">Promo 1</div>
            <div class="promo promo2">Promo 2</div>
        <div class="main clearfix">
            <div class="main-left">Left</div>
            <div class="main-main">Main</div>
            <div class="main-right">Right</div>
        </div>
            <div class="footer">Footer</div>
        </div>
    </body>
</html>

html,
body {
margin: 0;
padding: 0;
}

body {
width: 450px;
height: 335px;
font-family: “Arial”, sans-serif;
font-size: 10px;
color: white;
}
.container{
background: #34495e;
}
.header{
background:#c0392b;
float: left;
margin: 10px;
margin-left: 50px;
width: 340px;
height: 25px;
padding: 5px;
}
.clearfix{
content: “”;
clear: both;
display: table;
}
.menu{
background: #3498DB;
height: 25px;
width: 340px;
padding: 5px 55px;
}
.promo{
background:#c0392b;
width: 160px;
padding: 5px;
}
.promo1{
float: left;
margin-right: 10px;
margin-left: 50px;
margin-top: 10px;
margin-bottom: 10px;
height: 50px;

}

.promo2{
float: left;
margin-top: 10px;
margin-bottom: 10px;
height: 50px;
}
.main{
background:#fff;
padding: 10px 45px;
padding-left: 50px;
width: 100%

}

.main-left{
background:#3498DB;
float: left;
margin-right: 10px;
padding: 5px;
height: 100px;
padding-right: 50px;
}
.main-main{
background: #3498DB;
float: left;
margin-right: 10px;
padding: 5px;
height: 100px;
padding-right: 160px;
}
.main-right{
background: #3498DB;
float: left;
padding: 5px;
height: 100px;
padding-right: 40px;
margin-right: 5px;
}
.footer{
height: 25px;
width: 340px;
padding: 5px 55px;
}
/*
Используемые цвета:
#34495e – мокрый асфальт
#c0392b – красный
#3498DB – синий
*/

у вас HTML-код не отображается

у меня видно…

по поводу оптимизации - вы почему-то отказались от использования центровщика, а это штука удобная и очень часто используемая, и вместо этого везде прописывали достаточно большие левые-правые паддинги-маргины. А если ширина боди изменится на пару пикселей? вам придется, чтобы сохранить центровку, все эти отступы находить, перерасчитывать и переписывать.
Дальше, лучше задавать min-height, а не просто height - тогда, при добавлении содержимого блоки будут спокойно расти в высоту.
У вас что-то непонятное происходит с блоками в разделе .main - вы решили, что они недостойны, чтобы им задали определенную width. А теперь представьте, что будет, если вы добавите в них текст - они потолстеют! Чем больше текста - тем шире они будут, ибо ни чем не ограничены. И вместо красивых, стройных, выверенных колонок вы получите ожирение блока последней степени. Да, и задавать width:100%; совместно с паддингами (как вы сделали для .main) имеет смысл только при совместном использовании с {box-sizing: border-box;} иначе опять же будет некрасиво “выпирать” из родителя.

2 лайка

и ещё: зачем вам свойство флоат для .header? флоаты используют для создания “колоночной” сетки, а у хедер у вас один, без соседей справа.

спасибо!

не могу понять почему центрирование работает с хедером
.header{
background:#c0392b;
width: 340px;
min-height: 25px;
padding: 5px;
margin: 0 auto;

но не работает с блоками:
.promo{
background:#c0392b;
width: 160px;
padding: 5px;
/margin-bottom: 10px;/
/margin-top: 10px;/
display: inline-block;
margin: 0 auto;

}

.promo1{
float: left;
margin-right: 10px;
min-height: 50px;
}
.promo2{
float: left;
height: 50px;
}

Потому что вместе с флоат маргин:авто не работает (центрирование с помощью маргинов - это размещение элемента по центру, а флоат предполагает его прижатие к левому либо правому краю). Поэтому сделайте для блоков .promo общую обертку и отцентрируйте с помощью маргинов уже её.