Padding, margin в Em

408
02 февраля 2017, 02:06

Необходимо для заголовка задать отступы в em. Относительно чего будет высчитываться margin? Относительно размера шрифта заголовка? Или его родителя?

Answer 1

Относительно размера шрифта заголовка, размер шрифта родителя не влияет. В примере одинаковые отступы и внутренние поля в em, но разные в пикселях из-за размера шрифта.

.block { 
  border: 1px solid; 
  font-size: 20px; 
  margin: 2em; 
  padding: 1em; 
} 
 
.block--big { 
  font-size: 25px; 
} 
 
.block--small { 
  font-size: 15px; 
} 
 
.container { 
  font-size: 40px; 
}
<div class="container"> 
  <div class="block">text</div> 
  <hr> 
  <div class="block block--small">text</div> 
  <hr> 
  <div class="block block--big">text</div> 
</div>

Answer 2

Относительно размера шрифта родительского элемента.

.parent {
    font-size: 16px;
}
.child {
    margin: 2em; /* = 32px */
}

Если есть необходимость считать от постоянного размера шрифта корневого элемента, а не от родительского, то используйте rem.

html {
    font-size: 18px;
}
.any-element {
    margin: 2rem; /* = 36px */
}

Отличнейшим наглядным образом разница между ними двумя представлена здесь.

READ ALSO
Зачем нужен 4 конструктор std::bitset, когда есть 3?

Зачем нужен 4 конструктор std::bitset, когда есть 3?

Класс std::bitset имеет несколько конструкторовОдин из них (3) имеет вид:

396
слить три отсортированных файла

слить три отсортированных файла

здравствуйте, есть задача слить 3 отсортированных файла в один

368
move семантика до 11 стандарта

move семантика до 11 стандарта

Как поместить в data_new объект data_old без копирования последнего, те

379