Это понимание приходит, в основном, через метод тыка
, а потом чтения документации... Причем ее иногда не хочется читать, потому что ее за тебя уже прочитали и внедрили в браузер
и тебе приходится с этми соглашаться
Потому как иногда логики нет вообще
простейший пример
padding может быть только положительный
margin - любой знак
назначение понятно обоих
.class1{
margin-bottom:25px;
}
.class2{
margin-top:30px
}
<div class="class1"></div>
<div class="class2"></div>
какое расстояние будет между блокаи?
30px
Теперь идем к псевдоселекторам
Ты все верно привел из документации
Идея в том, что
Перед (before) и после (after) у блока нужно произвести какие-то стилизации
.
clearfix:after {
content: "."; /*Вывели как бы контент*/
display: block; /*задали блочное поведение*/
height: 0; /*типа спрятали */
overflow: hidden; /* а это чтоб контент не отображался вне блока */
}
.clearfix:after {
clear:both /* это аналог отдельного элемента с clear:both */
}
Возвращаемся к теме
.class1{
width:100px;
padding:10px;
}
<div class="class1">
<p>текст
</p>
</div>
Все идеально так как хотели, и понятно
.class1{
width:100px;
padding:10px;
}
.class2{
}
<div class="class1">
<div class="class2">
</div>
</div>
Вопрос... А будет ли class2 иметь ширину 80px?
А если в таком случае еще и сделать
class2{
margin-left:50px
}
вот пример
<div style="width: 100px; padding: 10px;">
<div style="margin-left: 50px;">AAAAAAAAAAAA AAAAAAAAAAAAAAAAA AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA
</div>
</div>