<MyRusakov.ru />

Профессиональная Web-разработка. Дизайн, код и автоматизация

Профессиональная Web-разработка. Дизайн, код и автоматизация

Это очень подробный курс из разряда "всё включено". Разбираются следующие темы: HTML, CSS, SCSS, JavaScript, PHP, SQL, Laravel, Nginx, PostCSS, npm, Vite, Vitest, Composer, PHPUnit, Prettier, Stylelint, ESLint, Pint, Larastan, Git, Agile, Scrum, Docker, Supervisord, Figma, Stitch AI, Confluence, Jira.

Рассчитан и на новичков, и на тех, кто уже знаком с основами, но хочет освоить полный цикл разработки.

Помимо самой теории, Вы увидите пример создания Web-проекта на 20 000 строк кода: от идеи и документации на Confluence через планирование на Jira, fullstack-разработку до деплоя на VPS.

Помимо уроков, курс содержит упражнения для закрепления знаний и финальное тестирование. А ещё Вы получите 5 полноценных Бонусных курсов: «GitLab под ключ», «Вёрстка сайта с нуля 2.0», «JavaScript с Нуля до Гуру 2.0», «PHP и MySQL с Нуля до Гуру 3.0» и «Laravel от А до Я».

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

CSS background: цвета, изображения, градиенты и множественные фоны — практическое руководство

CSS background: цвета, изображения, градиенты и множественные фоны — практическое руководство

Запрос, который часто вбивают в поиск: «CSS background: полное руководство с примерами». В этой статье вы разберёте составное свойство background, его «длинные» свойства, градиенты и множественные слои. Покажу практические паттерны для hero-блоков, карточек, скелетонов и логотипов, а также подводные камни сокращённой записи.

Что такое фон в CSS и как он наслаивается

Фон — это слой(и) за содержимым элемента. Он может состоять из цвета, изображений и градиентов. Слои можно комбинировать запятыми: первый в списке — верхний слой, последний — нижний. Цвет фона всегда находится под всеми слоями изображений и градиентов.

Составное свойство и «длинные» аналоги

Сокращённая запись background управляет сразу несколькими свойствами. Её эквиваленты по отдельности:

  • background-color
  • background-image
  • background-repeat
  • background-position
  • background-size
  • background-attachment
  • background-origin
  • background-clip

Популярный шаблон с сокращением:

.hero {
  /* позиция / размер повтор прикрепление источник отсечение */
  background: center / cover no-repeat fixed border-box padding-box;
  background-image: url('hero.webp');
  background-color: #0b1221; /* фолбэк под изображением */
}

Важный подводный камень сокращений

Любое новое присваивание background сбрасывает ВСЕ его под-свойства к initial, если вы их не указали снова. Поэтому для ховеров и состояний лучше менять конкретные «длинные» свойства.

/* Плохо: пропадёт изображение при :hover */
.card { background: url(card.webp) center/cover no-repeat; }
.card:hover { background: #111; }

/* Хорошо: меняем только цвет-подложку */
.card { 
  background: url(card.webp) center/cover no-repeat; 
  background-color: #0e0e10;
}
.card:hover { background-color: #111; }

Цвет фона и фолбэк под изображением

Всегда задавайте background-color вместе с картинкой или градиентом — это улучшает восприятие при медленной загрузке и в high-contrast режимах. Часто используют близкий к доминирующему цвет изображения оттенок.

background-image: url(), градиенты, несколько слоёв

Слой может быть ссылкой на файл или функцией-градиентом. Несколько слоёв разделяются запятой. Порядок: первый — верхний.

.overlay-hero {
  background-image: 
    linear-gradient(180deg, rgba(0,0,0,.5), rgba(0,0,0,.2)),
    url('hero@1x.webp');
  background-size: auto, cover;
  background-position: center, center;
  background-repeat: no-repeat, no-repeat;
  background-color: #0a0a0a;
}

Позиция и размер: cover vs contain

  • background-size: cover — заполняет контейнер, обрезая лишнее;
  • background-size: contain — вписывает целиком, возможны «поля».
.hero { background: center / cover no-repeat url('banner.webp'); }
.logo-box { background: center / contain no-repeat url('brand.svg'); }

Комбинируйте с background-position. Например, чтобы «закрепить» важную область снимка по горизонтали:

.product-hero {
  background-image: url('shoe.webp');
  background-position: 80% center; /* смещаем важный объект вправо */
  background-size: cover;
}

Повторение и спрайты

repeat по умолчанию тайлит изображение. Для иконок используйте no-repeat и точное позиционирование. Со спрайтами:

.icon {
  width: 24px; height: 24px;
  background: url('sprite.png') no-repeat;
}
.icon--search { background-position: -48px -24px; }

Градиенты: linear, radial, conic

Градиенты рендерятся движком браузера и не требуют загрузки файлов. Отлично подходят для подложек, масок и декоративных паттернов.

/* Линейный градиент с углом */
.btn {
  background: linear-gradient(135deg, #7c5cff, #00d4ff);
}

/* Радиационный градиент для «светового пятна» */
.card {
  background-image: radial-gradient(circle at 30% 20%, rgba(255,255,255,.2), transparent 60%),
                    linear-gradient(#101217, #0b0d12);
}

/* Конический градиент для диаграмм/декора */
.badge {
  background: conic-gradient(from 90deg, #ff6a00, #ffd100, #00e1ff, #ff6a00);
}

Повторяющиеся паттерны без изображений:

.stripes {
  background: repeating-linear-gradient(45deg, #f4f6fa 0 10px, #e8ecf3 10px 20px);
}

Множественные фоны и порядок слоёв

Первый слой в background — поверх остальных. Это удобно для затемнения фотографий поверх картинки.

.hero-dark {
  background:
    linear-gradient(rgba(0,0,0,.6), rgba(0,0,0,.3)),
    url('mountains.webp') center/cover no-repeat;
  color: #fff;
}

Retina и современные форматы: image-set()

Подключайте разные варианты под плотность пикселей и форматы (WebP/AVIF):

.banner {
  background-image: image-set(
    url('hero.avif') type('image/avif') 1x,
    url('hero@2x.avif') type('image/avif') 2x,
    url('hero.webp') type('image/webp') 1x,
    url('hero@2x.webp') type('image/webp') 2x
  );
  background-size: cover;
  background-position: center;
  background-color: #0b0d10; /* фолбэк */
}

background-attachment: fixed — осторожно на мобильных

Эффект параллакса с fixed часто лагает на iOS/Android. Рассмотрите псевдоэлемент с position: fixed вместо background-attachment, либо используйте sticky/transform-анимации для эффекта без артефактов.

origin и clip: где рисуется фон

background-origin управляет началом координат (border-box, padding-box, content-box). background-clip — где обрезать фон. Трюк с клипом по тексту:

.text-gradient {
  background: linear-gradient(90deg, #ff8a00, #e52e71);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent; /* делает видимым градиент через текст */
}

Практические рецепты

1) Hero с затемнением и адаптивом

.hero {
  min-height: 60vh;
  display: grid; place-items: center;
  text-align: center; color: #fff;
  background:
    linear-gradient(180deg, rgba(0,0,0,.55), rgba(0,0,0,.2)),
    image-set(url('hero.avif') type('image/avif') 1x, url('hero@2x.avif') type('image/avif') 2x);
  background-size: auto, cover;
  background-position: center, 70% center; /* чуть сдвигаем фокус */
  background-repeat: no-repeat;
}

2) Логотипы или скриншоты без обрезания

.logo-box {
  width: 220px; height: 120px; border-radius: 12px; background-color: #0f1420;
  background: center/contain no-repeat url('logo.svg');
}

3) «Скелетон» с шиммером без изображений

.skeleton {
  border-radius: 8px; height: 16px;
  background: linear-gradient(100deg, #f1f3f7 30%, #e6eaf1 50%, #f1f3f7 70%);
  background-size: 200% 100%;
  animation: shimmer 1.2s infinite linear;
}
@keyframes shimmer {
  to { background-position: -200% 0; }
}

4) Тонкий паттерн без картинок

.pattern {
  background:
    linear-gradient(rgba(255,255,255,.06), rgba(255,255,255,.06)),
    repeating-linear-gradient(45deg, #0e1320 0 10px, #0f1526 10px 20px);
}

Производительность и доступность

  • Не используйте огромные фоновые изображения для критичного LCP-контента. Если это главный визуал страницы, лучше применить <img> или <picture> — они умеют lazy и оптимальный выбор источника нативно.
  • Сжимайте фоны: AVIF/WebP + разумные размеры. Для ретины используйте image-set().
  • Задавайте background-color как фолбэк и для хорошего контраста текста поверх фоновых фотографий добавляйте полупрозрачные градиенты-оверлеи.
  • Не злоупотребляйте background-attachment: fixed на мобильных — возможны артефакты и высокая стоимость перерисовки.

Частые ошибки и как их избежать

  • Случайный сброс свойств через background. Решение: меняйте только нужные «длинные» свойства.
  • Неправильный фокус на изображении при cover. Решение: регулируйте background-position по оси X/Y (например, 80% center).
  • Проблемы с контрастом поверх фото. Решение: градиент-подложка поверх изображения, проверка контраста инструментами браузера.
  • Использование фона для контента. Если картинка важна семантически — это не background, а <img alt="...">.

Куда двигаться дальше

Отточить практику и собрать собственный набор UI-паттернов по фонам помогут проекты с наставником. Если хотите быстро прокачать навыки вёрстки и CSS на реальных примерах, рекомендую пройти интенсив: Прокачать вёрстку на курсе «Вёрстка сайта с нуля 2.0» — от семантики до адаптива и анимаций, с обратной связью по коду.

Итог

CSS background — это мощный инструмент для визуального оформления без лишних изображений. Зная, как работают слои, позиционирование, размеры, градиенты и сокращённая запись, вы избежите распространённых ошибок и ускорите интерфейс. Применяйте фолбэки, image-set(), аккуратно работайте с fixed и смело комбинируйте несколько слоёв для выразительных, но производительных UI.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.