Как поставить картинку фоном блока через background?
Хочу сделать секцию с фоновой картинкой и текстом поверх неё. Вставил через <img>, но текст наложить не получается. Как правильно задать фоновое изображение и чтобы оно красиво заполняло блок?
2 ответа
Для фона используйте не тег <img>, а CSS-свойство background — тогда поверх легко кладётся текст.
.hero {
background-image: url('/img/bg.jpg');
background-size: cover; /* заполнить блок целиком */
background-position: center; /* центрировать картинку */
background-repeat: no-repeat; /* не повторять плиткой */
height: 400px;
color: #fff;
}
<section class="hero">
<h1>Текст поверх фона</h1>
</section>
Ключевые свойства:
background-size: cover— картинка масштабируется так, чтобы полностью закрыть блок (края могут обрезаться).containнаоборот впишет целиком, оставив пустоты.background-position: center— какой участок виден при обрезке.no-repeat— иначе маленькая картинка размножится плиткой.- блоку нужна высота, иначе фону негде показаться.
Часто текст плохо читается на пёстром фото. Наложите затемнение прямо в background через градиент:
background:
linear-gradient(rgba(0,0,0,.4), rgba(0,0,0,.4)),
url('/img/bg.jpg') center/cover no-repeat;
В последней строке — сокращённая запись всех свойств сразу. Полупрозрачный чёрный слой делает белый текст читаемым.
Когда использовать что: background-image — для декоративных фонов (картинка не несёт смысла, только оформление). Тег <img> — для содержательных изображений (фото товара, иллюстрация), потому что у него есть alt и его видят поисковики и скринридеры. Текст «поверх картинки» почти всегда означает декоративный фон, так что background тут уместен.