Испытание: строим сетку [27/32] Решил на 100%, но остались вопросы ! Помогите разобраться.

HTML

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

CSS

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

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

.wrapper {
    background: #34495e;
    width:450px;
    height: 150px;
    padding: 10px 0px 10px 0px;
}
.centering {
    width: 350px;
    margin: 0 auto;
}
.clearfix::after {
    content: "";
    clear: both;
    display: table;
}
.header {
    background: #c0392b;
    min-height: 35px;
}
.menu {
    background: #3498DB;
    min-height: 35px;
    margin-top: 10px;
    width: auto;

}
.promo .promo-1 {
    float: left;
    width: 170px; 
    background: #c0392b;
    min-height: 60px;
    margin-top: 10px;
    box-sizing: border-box;
}    
.promo .promo-2 {
    float: right;
    width: 170px; 
    background: #c0392b;
    min-height: 60px;
    margin-top: 10px;
    box-sizing: border-box;

}  

.maining .left {
    background: #3498DB;
    min-height: 110px;
    margin-top: 20px;
    margin-right: 10px;
    width: 70px;
    float: left;
    box-sizing: border-box;
}
.maining .main {
    background: #3498DB;
    min-height: 110px;
    margin-top: 20px;
    margin-right: 10px;
    width: 190px;
    box-sizing: border-box;
    float: left;
}
.maining .right {
    background: #3498DB;
    min-height: 110px;
    margin-top: 20px;
    width: 70px;
    float: left;
    box-sizing: border-box;
}
.footer {
    background: #34495e;
    min-height:35px; 
    margin-top: 10px;
    width: auto;
}
p {
    margin: 0;
    padding: 5px;
}
.menu p {
    padding: 5px 0px 0px 55px;
}
.footer p {
    padding: 5px 0px 0px 55px;
}
  1. Что сделано не правильно ?
  2. Что можно пофиксить ?
  3. До сих пор не совсем понимаю как работает класс clearfix в связке с after
    .clearfix::after { - что именно делает after ?
    content: “”; - что именно дает данное свойство ?
    clear: both;
    display: table; - я правильно понимаю ? мы создаем обрамление для данной области ?
  4. box-sizing: border-box; - в отличии от обычного определения области где сладываеться width+height+margin+padding, в случае с border-box, width+height формируют область в которой применение padding не расширит ее (область) ? я правильно понимаю ?

Спасибо за советы и ответы.

Содержимое меню и футера не центровано. В соседней теме есть подробная инструкция.
::after - это псевдоэлемент. В разметке его нет, и содержимого у него тоже нет. Вместо этого пишется пустое свойство content, обозначающее, что элемент существует. Также псевдоэлементу задается свойство display, чтобы можно было воспользоваться свойством clear. Подробнее о псевдоэлементах будет в курсе “Селекторы. Часть 2”.
Про box-sizing вы правильно поняли.