← Назад к вопросам

Как изменить background у изображения в CSS?

1.0 Junior🔥 281 комментариев
#HTML и CSS

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как изменить background у изображения в CSS?

Контекст

Этот вопрос обычно означает один из двух случаев:

  1. Как задать фоновое изображение элементу (background-image)
  2. Как изменить фоновый цвет позади изображения (когда у картинки прозрачность)

Разберу оба случая.

Способ 1: Фоновое изображение элемента

background-image - добавляет изображение как фон элемента:

/* Простой способ */
.container {
  background-image: url('path/to/image.jpg');
  width: 300px;
  height: 200px;
}

/* С дополнительными свойствами */
.hero {
  background-image: url('hero.jpg');
  background-size: cover;           /* Заполнить контейнер */
  background-position: center;      /* Центрировать */
  background-repeat: no-repeat;     /* Не повторять */
  height: 500px;
}

Полный пример с использованием:

<div class="card-with-bg"></div>
.card-with-bg {
  background-image: url('/images/card-bg.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 20px;
  border-radius: 8px;
  min-height: 300px;
}

Способ 2: Фоновый цвет позади картинки с прозрачностью

Если у изображения есть прозрачные области (PNG с альфа-каналом):

<img class="icon" src="icon.png" alt="Icon" />
/* Способ 1: background у контейнера */
.icon-container {
  background-color: #f0f0f0;
  padding: 10px;
  border-radius: 4px;
  display: inline-block;
}

/* Способ 2: filter (изменить внешний вид картинки) */
.icon {
  filter: invert(1) brightness(1.2);
}

/* Способ 3: mix-blend-mode (режим смешивания) */
.icon {
  mix-blend-mode: screen;
}

Практический пример:

<div class="button-icon-wrapper">
  <img src="arrow.png" alt="Arrow" class="button-icon" />
</div>
.button-icon-wrapper {
  background-color: rgba(0, 0, 0, 0.1);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.button-icon {
  width: 24px;
  height: 24px;
}

Способ 3: Градиент поверх изображения

Для создания красивого оверлея:

.hero-section {
  background-image: 
    linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
    url('hero.jpg');
  background-size: cover;
  background-position: center;
  height: 500px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
}

Градиент от цвета к изображению:

.banner {
  background-image: 
    linear-gradient(to right, rgba(255, 0, 0, 0.7), transparent),
    url('banner.jpg');
  background-size: cover;
  background-position: center;
  height: 300px;
}

Способ 4: Использование CSS фильтров

Изменить как выглядит изображение:

.image-dimmed {
  filter: brightness(0.7);
}

.image-blur {
  filter: blur(5px);
}

.image-grayscale {
  filter: grayscale(100%);
}

.image-sepia {
  filter: sepia(100%);
}

.image-saturated {
  filter: saturate(2);
}

/* Комбинирование фильтров */
.image-custom {
  filter: brightness(0.8) saturate(1.2) contrast(1.1);
}

Способ 5: background-blend-mode

Режимы смешивания для фонового изображения:

.image-multiply {
  background-image: url('texture.png');
  background-color: blue;
  background-blend-mode: multiply;
}

.image-screen {
  background-image: url('light.png');
  background-color: #333;
  background-blend-mode: screen;
}

.image-overlay {
  background-image: url('pattern.png');
  background-color: #ddd;
  background-blend-mode: overlay;
}

Способ 6: box-shadow для отбрасывания тени

Если нужно добавить визуальный эффект:

img {
  box-shadow: 
    0 4px 6px rgba(0, 0, 0, 0.2),
    inset 0 0 20px rgba(255, 255, 255, 0.3);
  border-radius: 8px;
}

Практические примеры в React

Компонент с фоновым изображением:

interface CardProps {
  imageUrl: string;
  title: string;
}

export function ImageCard({ imageUrl, title }: CardProps) {
  return (
    <div 
      className="card"
      style={{
        backgroundImage: `url(${imageUrl})`,
        backgroundSize: 'cover',
        backgroundPosition: 'center'
      }}
    >
      <div className="card-overlay">
        <h2>{title}</h2>
      </div>
    </div>
  );
}
.card {
  width: 300px;
  height: 200px;
  border-radius: 8px;
  position: relative;
  overflow: hidden;
}

.card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.7), transparent);
  display: flex;
  align-items: flex-end;
  padding: 20px;
  color: white;
}

Способ 7: Фоновое изображение с fallback цветом

Для надежности - если изображение не загрузится:

.container {
  background: 
    linear-gradient(rgba(200, 200, 200, 0.1), rgba(200, 200, 200, 0.1)),
    url('image.jpg') center / cover no-repeat,
    #e0e0e0; /* Fallback цвет */
}

CSS Свойства для управления фоном

Полный список:

СвойствоОписаниеПример
background-imageИзображениеurl('img.jpg')
background-colorЦвет фона#fff или rgba(0,0,0,0.5)
background-sizeРазмерcover, contain, 100px 200px
background-positionПозицияcenter, top right, 10px 20px
background-repeatПовторениеno-repeat, repeat-x, repeat-y
background-attachmentПрикреплениеfixed (параллакс), scroll
background-blend-modeРежим смешиванияmultiply, screen, overlay

Best Practices

Оптимизация:

/* Сокращенная запись */
.element {
  background: url('image.jpg') center / cover no-repeat;
}

/* Вместо */
.element {
  background-image: url('image.jpg');
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}

Для изображений с прозрачностью:

<!-- Обернуть в контейнер с background-color -->
<div class="image-wrapper">
  <img src="icon.png" alt="Icon" />
</div>
.image-wrapper {
  background-color: #f0f0f0;
  padding: 8px;
  border-radius: 4px;
  display: inline-block;
}
Как изменить background у изображения в CSS? | PrepBro