Объясните, почему это работает?

Нашел css код который даёт нам резиновый квадрат с фиксированными пропорциями. т.е. квадрат остаётся квадратом как мы бы не изменяли ширину бразура. Я не могу понять, почему див в значение высоты принимает значение ширины?

div {
  width: 50%;
  /* Задаём ширину */
  margin: auto;
  /* Размещаем по цетру */
  background: silver;
  /* Задаём фон */
  overflow: hidden;
  /* Скрываем всё, что выходит за границы*/
}

div:before {
  /* Добавляем свойства в конец элемента */
  content: "";
  padding-top: 100%;
  /* Отступ сверху */
  float: left;
  /* Приковываем к левому краю */
}
<div></div>


Ответы (1 шт):

Автор решения: Grundy

Как указано в спецификации:

значение отступа, указанное в процентах, рассчитывается относительно ширины содержащего блока.

Таким образом, задав padding-top: 100% мы распираем элемент before, и, как следствие, сам div, на 100% ширины дива, что позволяет получить в итоге квадратный вид.

→ Ссылка