В CSS есть несколько способов сделать фон полупрозрачным.
Самый очевидный — свойство opacity. Но вот в чём подвох: если ты задаёшь opacity для контейнера, прозрачными становятся все его дочерние элементы. То есть и фон, и текст, и иконки — всё бледнеет. Это не то, что нам нужно.
Вместо этого используют прозрачность только для фонового изображения или цвета. Для этого есть два основных подхода:
- Использовать
rgba()илиhsla()для цвета фона (background-color). - Наложить полупрозрачное изображение через
background-imageс помощьюlinear-gradientили псевдоэлементов.
Суть в том, чтобы прозрачность применялась только к фону, а не к содержимому блока. Это позволяет сохранить читаемость текста и других элементов.
Можно сделать так:
.block {
background-image: url('bg.jpg');
opacity: 0.5;
}
Результат: и фон, и текст становятся полупрозрачными.
Вариант с rgba() (для цветного фона):
Если нужен просто цвет с прозрачностью:
.block {
background-color: rgba(255, 255, 255, 0.5); /* белый с 50% прозрачностью */
}
Результат: текст остаётся нормальным, фон — полупрозрачный.
Вариант с linear-gradient (для изображения):
Можно наложить полупрозрачный градиент поверх картинки:
.block {
background-image:
linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.5)), url('bg.jpg');
background-position: center center;
background-repeat: no-repeat;
}
Результат: фон затемняется, текст не тронут.
