CSS

Фоны и градиенты

background-color, background-image, background-size, background-position, linear-gradient, radial-gradient.

Средний (Intermediate)
Нужно знать:CSS-функции

Кратко

CSS-свойства фона: background-color — цвет, background-image — картинка, background-size — размер, background-position — позиция, background-repeat — повторение, background-attachment — прикрепление. Градиенты: linear-gradient — линейный, radial-gradient — радиальный. Это ОБОИ для элемента.


Подробно

Свойства фона:

background-color: #3498db; background-image: url('bg.jpg');

background-size:

  • cover — заполнить весь элемент (может обрезать)
  • contain — вписать целиком (может быть пустое пространство)
  • 100% auto — растянуть по ширине

background-position: center top; background-repeat: no-repeat; background-attachment: fixed; /* Фон неподвижен при скролле */

Сокращение: background: #3498db url('bg.jpg') center/cover no-repeat;

Градиенты (это background-image!):

linear-gradient(angle, color1, color2): background: linear-gradient(135deg, #667eea, #764ba2);

radial-gradient(circle, color1, color2): background: radial-gradient(circle, #667eea, #764ba2);

Множественные фоны: background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url('image.jpg') center/cover;

/* Тёмный оверлей поверх картинки */

Градиенты как border: border-image: linear-gradient(135deg, #667eea, #764ba2) 1;

Repeating gradients: background: repeating-linear-gradient( 90deg, #333 0px, #333 1px, transparent 1px, transparent 20px );


Ментальная модель

Фон — как обои для комнаты. background-color — цвет стен. background-image — фотообои. background-size — cover = растянуть на всю стену, contain = вписать целиком. Градиент — плавный переход цветов (от синего к фиолетовому).


Примеры

**Самый простой:**

css
.hero {
  background: linear-gradient(135deg, #667eea, #764ba2);
  color: white;
  padding: 4rem;
  text-align: center;
}

.card {
  background: white;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

Градиентный фон для hero и белый фон для карточек.

**Простой:**

css
/* Фон-картинка с оверлеем */
.hero {
  background:
    linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4)),
    url('/images/hero.jpg') center/cover no-repeat;
  min-height: 60vh;
  display: grid;
  place-items: center;
  color: white;
}

/* Повторяющийся паттерн */
.pattern {
  background:
    radial-gradient(circle, #ddd 1px, transparent 1px);
  background-size: 20px 20px;
}

/* Кнопка с градиентом */
.btn-gradient {
  background: linear-gradient(135deg, #667eea, #764ba2);
  color: white;
  border: none;
  padding: 0.75rem 1.5rem;
  border-radius: 6px;
  background-size: 200% 200%;
  transition: background-position 0.3s;
}

.btn-gradient:hover {
  background-position: right center;
}

Фон-картинка с оверлеем, паттерн, градиентная кнопка.

**Реальный пример:**

css
/* Полноценный фон */
.hero {
  position: relative;
  min-height: 80vh;
  display: grid;
  place-items: center;
  overflow: hidden;
}

.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(102,126,234,0.3), transparent 50%),
    radial-gradient(ellipse at 80% 50%, rgba(118,75,162,0.3), transparent 50%),
    linear-gradient(135deg, #0f0c29, #302b63, #24243e);
}

.hero-content {
  position: relative;
  z-index: 1;
  text-align: center;
  color: white;
  padding: 2rem;
}

/* Сетка с фоном */
.grid-bg {
  background:
    linear-gradient(rgba(0,0,0,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,0,0,0.03) 1px, transparent 1px);
  background-size: 40px 40px;
}

/* Карточка с фоном */
.card-gradient {
  background:
    linear-gradient(135deg, hsl(var(--card-hue) 80% 95%), hsl(var(--card-hue) 80% 90%));
  border: 1px solid hsl(var(--card-hue) 80% 80%);
  border-radius: 12px;
  padding: 1.5rem;
}

/* Фиксированный фон */
.parallax-section {
  background: url('/images/bg.jpg') center/cover fixed;
  min-height: 50vh;
  display: grid;
  place-items: center;
}

Продвинутые фоны: множественные градиенты, сетка, параллакс.


Частые ошибки

**Неправильно:** Использовать background-size: cover без overflow: hidden

**Почему:** Cover может выходить за границы элемента. Если есть border-radius — картинка «вылезает».

**Правильно:** Для скруглённых углов: border-radius + overflow: hidden.

**Неправильно:** Не использовать object-fit вместо background-image

**Почему:** Для контентных изображений (<img>) используйте object-fit: cover. background-image — для декоративных.

**Правильно:** <img> + object-fit: cover — для контента. background-image — для декора и оверлеев.

**Неправильно:** Путать background-size: cover и contain

**Почему:** cover — заполнит весь элемент (может обрезать). contain — впишет целиком (может быть пустое пространство).

**Правильно:** cover — «на всю стену». contain — «вписать целиком».


Важно запомнить

  • background: цвет, картинка, позиция, размер, повтор
  • cover — заполнить, contain — вписать целиком
  • linear-gradient() и radial-gradient() — градиенты
  • Множественные фоны: оверлей поверх картинки
  • Градиенты — это background-image!

Связь

Назад: Вы знаете CSS-функции (C22) — фоны и градиенты завершают ваш набор инструментов CSS.

Вперёд: Это финальный урок CSS! Теперь вы умеете создавать и оформлять статические страницы: структура (HTML) + внешний вид (CSS). Следующий этап — JavaScript (JS Core): он добавит страницам поведение и интерактивность.

Материалы курса CSS — PROlab Academy.