[27/32] 100%. Прошу посмотреть код и указать на минусы и их последствия при верстке.

  1. Блоки в сетке не центрированы, из-за чего при большем разрешении экрана весь контент будет ближе к левой стороне, а справа - пустота…
  2. Фиксированные высоты у блоков, из-за чего невместившийся в отведенную высоту контент будет вываливаться за пределы блоков.
  3. В верстке присутствует распорка, однако для меню и футера clear: both; прописано отдельно.
  4. Всего лишь два блока-обертки, и во вторую вместе в тремя колонками включен футер, что по-моему нелогично и нарушает общую структуру страницы.

Почитайте темы на форуме по этому заданию. Вам есть что исправить.

Спасибо, что оценили и пояснили. Однако не получается внести исправления.

  1. Когда центрую блоки, то границы “Menu” (синего цвета) тоже центруются и становятся узкими по краям(а на образце они растянуты). Я сразу обратил внимание на то, что проще отцентровать все элементы, но пришлось выставлять все вручную.
    2… Я так понимаю надо выставить минимальную высоту, вместо фиксированной?
  2. Не понимаю почему не работает распорка (или работает частично). Убираю “clear”, и “Menu” уезжает вверх. Убираю распорку и опять же все съезжает. Возвращаюсь к уроку, там все работает, а у меня как-то криво.
  3. Надо всего лишь обернуть отдельно и прописать необходимые атрибуты?

На счет минимальной высоты вы правы.
Распорка срабатывает если у блока-родителя все дочерние содержат свойство float. Поэтому и нужны еще обертки, отдельно на блок с двумя колонками и отдельно на блок с тремя колонками.
Чтобы центрировать меню, нужна еще одна отдельная обертка. Помните о том, что в случае с меню вы центрируете не сам блок, а его содержимое, поэтому блок центровщик будет внутри меню.

В общем, свою “писанину” не смог до ума довести, поэтому сделал “с нуля”.
Если будет возможность, то посмотрите пожалуйста.

</head>
<body>
    
<div class="block">
   <div class="block1 center clearfix">
       <div class=header>Header</div>
   </div>
   <div class="block2">
       <div class=menu>Menu</div>
   </div>
   <div class="block3 center clearfix">
      <div class="block3-1">
         <div class=promo1> Promo 1</div>
      </div>
      <div class="block3-2">
         <div class=promo2> Promo 2</div>
      </div>
   </div>
   </div>
   <div class="block4 center">
       <div class=block4-1>
          <div class=left> Left</div>
       </div>
       <div class=block4-2>
          <div class=main> Main</div>
       </div>
       <div class=block4-3>
          <div class=right> Right</div>
       </div>
   </div>
   <div class=block5>
       <div class="footer"> Footer</div>
   </div>
</body>

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

body {
width: 350px;
height: 335px;
font-family: "Arial", sans-serif;
font-size: 10px;
color: white;
}

.block {
background-color: #34495e;
width: 450px;
padding: 10px 0px;
}
    
.block1 {
background-color: #c0392b;
float:left;
width: 350px;
min-height: 35px;
}

.header {
padding-top: 5px;
padding-left: 5px;   
}

.block2 {
 background-color: #3498DB; 
 float:left;
 width: 450px;
 min-height: 35px;
 margin: 10px auto;
}

.menu {
padding-top: 5px;
padding-left: 55px;    
}

.block3-1 {
background-color: #c0392b; 
float:left;
width: 170px;
min-height: 60px;
/*margin-left: 50px;*/
} 

.block3-2 {
background-color: #c0392b; 
float:left;
width: 170px;
min-height: 60px;
margin-left: 10px;
} 

.promo1 {
padding-top: 5px;
padding-left: 5px;
}

.promo2 {
padding-top: 5px;
padding-left: 5px;
}

.block4 {
padding: 10px 0px;    
}

.block4-1 {
background-color: #3498DB;
float:left;
width: 70px;
min-height: 110px;
margin-right: 10px;
}

.left {
padding-top: 5px;
padding-left: 5px;
}

.block4-2 {
background-color: #3498DB;
float:left;
width: 190px;
min-height: 110px;
}

.main {
padding-top: 5px;
padding-left: 5px;
}

.block4-3 {
background-color: #3498DB;
float:left;
width: 70px;
min-height: 110px;
margin-left: 10px;
}

.right {
padding-top: 5px;
padding-left: 5px;
}

.block5 {
background-color: #34495e;
float:left;
width: 450px;
min-height: 35px;
margin: 10px 0px;
}

.footer {
padding-top: 5px;
padding-left: 55px;
}

.clearfix::after {
display: table;
content: "";
clear: both;
}

.center {
margin-left: 50px;
width: 350px;
}

В прошлый раз код вставить правильно у вас получилось.

Про кавычки забыли совсем.
Возможно картинка поможет вам правильно увидеть сетку.

.layout-positioner{
width: 350px;
margin: auto;
}
.layout-positioner::after {
display: table;
content: “”;
clear: both;
}

Разобрался. Все теперь на своих местах. Спасибо!
Кавычки нужны, только если я перечисляю несколько классов (свойств и т.д.) или я ошибаюсь?

Где такое прочитали? Я допускаю мысль о том, что существуют некоторые необязательные элементы в синтаксисе, но… Все атрибуты в кавычках пишутся, будь то класс, идентификатор, адрес ссылки или что-то другое.

Понял на практике, что ничего не изменится, если не будет кавычек (за исключением вышеуказанного).

В кодгайде по этому поводу вроде бы ничего не сказано.

.layout-positioner::after {
display: table;
content: “”;
clear: both;
}

Почему здесь “layout-positioner”, а не “clearfix”?

Мог быть и clearfix, тогда у блока было бы два класса, а так только один.

Обратите внимание на повторяющийся код css, старайтесь сначала стилизовать блоки, у которых много общего, а уже потом выносить специфические отличия.

1 лайк

насколько нижний скан соответствует оригиналу? имеет ли значение различия у positioner’ов?

Где можно более подробно разобрать эти позиционеры? Не могу понять для чего нужны блоки в блоках, которые также в блоках, если можно задать фон основной и сверху добавить блок, для чего такое нагромождение в 3-4 уровня? запутался с обнулениями отступов… что и у кого обнулять ((

Покажите свой код. Начнём с этого.

<!DOCTYPE html>
<html lang="ru">
    <head>
        <title>Испытание: строим сетку</title>
        <meta charset="utf-8">
    </head>
    <body>
        <div class="header">
            <div class="layout-positioner">
                <div class="top-header">Header</div>
            </div>                                                                                 
            <div class="blue-bgc">			
                <div class="layout-positioner">
                    <div class="menu-header">Menu</div>
                </div>				
            </div>			
            <div class="layout-positioner">			
                <div class="layout-column">
                    <div class="promo">Promo 1</div>
                </div>				
                <div class="layout-column">				
                    <div class="promo">Promo 2</div>					
                </div>				
            </div>			
        </div>		
        <div class="features">
            <div class="layout-positioner">
                <div class="layout-column column1">
                    <div class="left-column">Left</div>
                </div>
                <div class="layout-column column2">
                    <div class="main-column">Main</div>
                </div>
                <div class="layout-column column3">
                    <div class="right-column">Right</div>
                </div>
            </div>
        </div>
        <div class="footer">
            <div class="layout-positioner">
                <div class="footer-text">Footer</div>
            </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;
}

.layout-positioner {
margin: 0 auto;
width: 350px;

}

.layout-positioner:after {
content: “”;
clear: both;
display: block;
}

/Header/
.header {
background-color: #34495e;
padding: 10px 0;
}

.top-header {
background-color: #c0392b;
padding: 5px;
min-height: 25px;
}

.blue-bgc {
background-color: #3498DB;
min-height: 35px;
margin: 10px 0;
}

.menu-header {
padding: 5px;
}

.header .layout-column {
float: left;
margin-right: 10px;
background-color: #c0392b;
min-height: 60px;
width: 170px;
}

.header .layout-column:last-child {
margin-right: 0px;
}

.promo {
padding: 5px;
}
/Features/
.features {
background-color: ;
}

.features .layout-column {
background-color: #3498DB;
float: left;
margin: 10px 10px 10px 0;
padding: 5px;
min-height: 100px;
}

.column1, .column3 {
width: 60px;
}

.column2 {
width: 180px;
}

.features .layout-column:last-child {
margin-right: 0px;
}

/Footer/
.footer {
background-color: #34495e;
min-height: 40px;
}

.footer-text {
padding: 5px;
}

Соответствует в целом. Различия в границах центровщика на пустой сетке не имеют значения.

Да, на примере пустой сетки вложенность кажется излишней.
Для задания вы могли, например, объединить два класса в один в фрагменте с промо-блоками и не выделять padding в отдельное правило. То же касается и блока с тремя колонками, где у вас получилось три лишних класса, которые никак не используются в css.

Вопрос про обнуление отступов не совсем поняла. Что и где вам пришлось обнулить в этом задании?

хотя бы взять этот кусок.
да и в предшествующих заданиях было говорено про обнуления маргинов, дабы не переносились блоки, если я вообще это правильно понял. так вот не совсем ясно для меня, кому именно из этой “башни” блоков задавать обнуление и кому задавать клир… если есть 2 блока, например, хедер и меню, которые “построены” при помощью 3х и 4х блоков соответственно, как разобраться в этом?

Постройте здесь свою башню. Будем разбираться на конкретном вашем примере.

1 лайк

Вот сделал на скорую руку, размеры не заморачивался, может есть погрешности +/-, единственное, что не смог отлепить “хедер” и “промо” от основного бэкграунда дабы задать внешние отсупы.

p/s/ как по мне “мой” способ гораздо понятнее , как мне кажется…