Друзья! Не совсем понял в чем суть. зафлоаченные блоки promo1 promo2 не реагируют на width и height, а подстраиваются под текст внутри, НО зафлоаченные блоки right main left на заданную ширину и высоту отзываются. Проблему с первыми решил с помощью установки padding’ов, загадкой осталось, почему блоки, которые находятся по сути в одних и тех же условиях, реагируют на ширину и высоту по разному.
Покажите код. Оценим “одни и те же” условия.
html,
body {
margin: 0;
padding: 0;
}
body {
width: 450px;
height: 335px;
font-family: “Arial”, sans-serif;
font-size: 10px;
color: white;
}
.section1 {
padding-top: 10px;
padding-bottom: 10px;
background-color: #34495e;
}
.header {
height: 35px;
background-color: #c0392b;
}
.menu {
height: 35px;
margin-top: 10px;
background-color: #3498DB;
}
.promo1,
.promo2 {
margin-top:10px;
padding-bottom:45px;
padding-right:120px;
background-color: #c0392b;
float: left;
}
.promo2 {
float: right;
}
.section2 {
padding-top: 10px;
padding-bottom: 10px;
}
.left {
width: 70px;
height: 110px;
background-color: #3498DB;
float:left;
margin-right: 10px;
}
.main{
width: 190px;
height: 110px;
background-color: #3498DB;
float:left;
}
.right{
width: 70px;
height: 110px;
background-color: #3498DB;
float:right;
}
.footer{
height: 35px;
background-color: #34495e;
}
.layout-positioner{
width: 350px;
margin: auto;
}
.layout-positioner::after {
display: table;
content: “”;
clear: both;
}
.text{
display: inline-block;
padding: 5px;
/*
Используемые цвета:
#34495e – мокрый асфальт
#c0392b – красный
#3498DB – синий
*/
html-код тоже. Кнопка для вставки </>
в редакторе сообщений.
<body>
<div class="section1">
<div class="layout-positioner">
<div class="header">
<span class="text">Header</span>
</div>
</div>
<div class="menu">
<div class="layout-positioner">
<span class="text">Menu</span>
</div>
</div>
<div class="layout-positioner">
<div class="promo1 test">
<span class="text">Promo 1</span>
</div>
<div class="promo2 test">
<span class="text">Promo 2</span>
</div>
</div>
</div>
<div class="section2">
<div class="layout-positioner">
<div class="left">
<span class="text"> Left</span>
</div>
<div class="main">
<span class="text"> Main</span>
</div>
<div class="right">
<span class="text"> Right</span>
</div>
</div>
</div>
<div class="footer">
<div class="layout-positioner">
<span class="text"> Footer</span>
</div>
</div>
Одинаково реагируют. Попробуйте:
.promo1,
.promo2 {
margin-top:10px;
/*padding-bottom:45px;
padding-right:120px;*/
width: 170px;
height: 60px;
background-color: #c0392b;
float: left;
}
я не могу понять: вы берете блочный элемент div, засовываете в него строчный span, который делаете блочно-строчным, чтобы к нему применить паддинги - зачем? с какой целью эта конструкция из двух оберток у текста? не проще ли остановится на первом div-е и применять паддинги уже к нему?
хм… и правда, очень странно, я долго гуглил в чем же беда:grimacing:
Спасибо.
Вы правы, спасибо за замечание, но “изящность” кода не влияла на ошибку)
В принципе он прав. Текст внутри блоков должен быть дополнительно обернут. В данном случае эта надпись рассматривается как содержимое блока, контент. Другой момент, что здесь лучше подошел бы тег <p>
. Он блочный по умолчанию в отличие от span.
хорошо, обертка в<span>
используется, чтобы потом задать паддинги для текста. ну вот, например, вот этот кусок:
<div class="section2">
<div class="layout-positioner">
<div class="left">
<span class="text"> Left</span>
</div>
<div class="main">
<span class="text"> Main</span>
</div>
<div class="right">
<span class="text"> Right</span>
</div>
</div>
</div>
здесь же паддинги можно спокойно задать для .left, .right, .main без использования <span>
аналогично и здесь:
<div class="layout-positioner">
<div class="promo1 test">
<span class="text">Promo 1</span>
</div>
<div class="promo2 test">
<span class="text">Promo 2</span>
</div>
</div>
Можно, я ведь не говорю, что нельзя. Просто это другой подход. Но он тоже правильный. <span>
здесь используется не только для отступов, а как “контейнер” (если так можно выразиться) для содержимого блока.
а как же минимализация кода?
В рамках задания или вообще?
и задания и вообще
В рамках задания конечно можно обойтись и без обертки, а вообще внутри блока .promo1 (например) наверняка будут другие блоки, то есть он не будет последней оберткой и код короче не будет.