Container без padding на desktop

Это было первое, что меня удивило! Контейнер НЕ должен иметь padding на больших экранах — только max-width и margin: 0 auto.

.container {
  max-width: 1340px;
  margin: 0 auto;
  /* БЕЗ padding на desktop! */
}

@media (max-width: 1339px) {
  .container {
    padding: 0 20px;
  }
}

Padding добавляется только когда экран становится меньше контейнера.

IBG Pattern — фоновые изображения

Паттерн для изображений которые должны заполнять весь контейнер:

.ibg {
  position: relative;
}

.ibg img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

Ratio-pic — сохранение пропорций

Когда нужно сохранить aspect ratio изображения:

.ratio-pic {
  --ratio: 1;
  aspect-ratio: var(--ratio);
  width: 100%;
  position: relative;
  overflow: hidden;
}

.ratio-pic img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

Использование:

<div class="ratio-pic" style="--ratio: 16/9;">
  <img src="image.webp" alt="">
</div>

Clamp() — плавное масштабирование

Это моё любимое открытие! Вместо кучи media queries:

.element {
  /* clamp(минимум, предпочтительно, максимум) */
  width: clamp(80px, 10vw, 130px);
  font-size: clamp(14px, 2vw, 18px);
  gap: clamp(16px, 3vw, 32px);
}

Размеры плавно меняются в зависимости от ширины экрана!

Opacity в Figma → RGBA

Когда в Figma текст чёрный с opacity 60%, не нужно искать серый цвет:

/* Figma: #000000 + opacity 60% */
.text {
  color: rgba(0, 0, 0, 0.6);
}

/* НЕ делай так: */
.text {
  color: #666666; /* неправильно! */
}

Sticky Footer

Footer всегда внизу, даже если контента мало:

.wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

footer {
  margin-top: auto;
}

Больше уроков от DEN — в моём Telegram! 📢

Главное правило

Контент определяет высоту. Никогда не ставь min-height или фиксированную высоту на контейнеры с текстом.