Gymterview
junior

В чем заключается разница между значениями 0 и auto в свойстве margin?

Значение 0 устанавливает нулевой отступ, а auto позволяет браузеру автоматически рассчитать отступ на основе доступного пространства.

Поведение auto

Ось Поведение auto
Горизонтальная (left/right) Занимает всё доступное пространство — используется для центрирования блока
Вертикальная (top/bottom) Эквивалентно 0 (не центрирует по вертикали)

Центрирование блока

Пример
.container {
  width: 800px;
  margin: 0 auto; /* top/bottom = 0, left/right = auto */
}

Для работы margin: auto по горизонтали необходимо, чтобы у элемента была явно задана ширина (width). Если width: auto, то margin: auto по горизонтали эквивалентен 0.

Flexbox меняет правила

Во Flexbox-контейнере margin: auto работает и по вертикали тоже — это один из способов центрирования элемента по обеим осям:

Пример
.flex-container {
  display: flex;
  height: 300px;
}

.flex-item {
  margin: auto; /* центрирование по обеим осям */
}

На собеседовании: главное — объяснить, что auto по горизонтали центрирует (при заданном width), а по вертикали — нет (кроме Flexbox). Частая ошибка — не упомянуть требование явной ширины.