Прошел испытание 27, прошу опытных товарищей проверить

Всем привет! Выполнил испытание 27, но уверен, что можно сделать элегантнее и правильнее. Помогите найти грубые ошибки. Валидатор цсс дает понять, что бордеры в цвет фона элемента не есть хорошо (класс header). Но как же я должен был правильно отступить первые 10 пикселей сверху?
Спасибо.

HTML:

<!DOCTYPE html>
<html lang="ru">
<head>
  <title>Испытание: строим сетку</title>
  <link href="setki.css" rel="stylesheet" type="text/css">
  <meta charset="utf-8">
</head>
<body>
  <div class="header">
    <div class="layout-positioner">
        <p>Header</p>
    </div>
  </div>
  <div class="menu">
    <div class="layout-positioner">
      <p>Menu</p>
    </div>
  </div>
  <div class="promo">
    <div class="layout-positioner">
      <div class="layout-column">
        <p>
          Promo 1
        </p>
      </div>
      <div class="layout-column">
        <p>
          Promo 2
        </p>
      </div>
    </div>
  </div>
  <div class="columns">
    <div class="layout-positioner">
      <div class="layout-column">
        <p>
          Left
        </p>
      </div>
      <div class="layout-column">
        <p>
          Main
        </p>
      </div>
      <div class="layout-column">
        <p>
          Right
        </p>
      </div>
    </div>
  </div>
  <div class="footer">
    <div class="layout-positioner">
      <p>
        Footer
      </p>
    </div>
  </div>
</body>
</html>

CSS:

html,
body {
    margin: 0;
    padding: 0;
}
div, p {margin: 0;
    padding: 0;}
body {
    width: 450px;
    font-family: "Arial", sans-serif;
    font-size: 10px;
    color: white;
}
.layout-positioner {
    width: 350px;
    margin: 0 auto;
}
.layout-positioner::after {
    display: table;
    content: "";
    clear: both;
}
.header, .promo, .footer {
    background-color:#34495e;
}
.menu {
    background-color: #3498DB;
}
.header {
    border: 1px solid #34495e;
}
.header p {
    margin:9px 0 9px 0;
    background-color:#c0392b;
    padding:5px;
    height: 25px;
}
.menu {height:35px;}
.menu p {padding: 5px;}
.promo .layout-column {
    width: 170px;
    background-color:#c0392b;
    height:60px;
    margin:10px 0;
}
.promo .layout-column:first-child{float:left;}
.promo .layout-column:last-child{float:right;}
.promo p {padding:5px;}
.columns .layout-column {
    background-color:#3498DB;
    margin-top:10px;
    height: 110px;
}
.columns .layout-column:first-child {
    float:left;
    width:70px;
}
.columns .layout-column:last-child {
    float:right;
    width:70px;
}
.columns .layout-column:nth-child(2) {
    float:left;
    width:190px;
    margin-left:10px;}
.columns p {padding:5px;}
.footer {
    height:35px;
    margin-top:10px;
}
.footer p {padding: 5px;}



/*
    Используемые цвета:
    #34495e – мокрый асфальт
    #c0392b – красный
    #3498DB – синий
*/

border в цвет фона - это не единственный способ борьбы с выпаданием внешних отступов.
Внутренние отступы для <p> можно было прописать один раз.
Не ограничивайте высоту блоков, лучше пишите min-height.
В целом неплохо.

1 лайк

А какие еще есть способы? Самый правильный на ваш взгляд.
Благодарю за помощь и советы.

Способ с padding лучше по-моему. Все способы описаны в теории, курс “Блочная модель документа”.