Menu

Цвет фона в CSS: background-color для страницы и элементов

background-color заливает блок элемента цветом. Разберем, как задать цвет фона всей страницы, div, строки таблицы или одного слова, как работает прозрачность, почему bgcolor устарел и чем background-color отличается от сокращенного свойства background.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Как задать цвет фона

background-color заливает цветом блок элемента, включая его padding и область под рамкой. Принимает любой цвет CSS.

Цвет страницы задан на body, карточка и уведомление на своих div, а выделение на строчном элементе. Строчные элементы получают фон только за своим текстом, строка за строкой.

Цвет фона всей страницы

Задайте background-color на body. Если у элемента <html> нет своего фона, браузер рисует фон body на все окно, даже там, где содержимое body заканчивается:

body {
  background-color: #111827;
  color: #f9fafb; /* change the text color too, for contrast */
}

Старый HTML-способ это <body bgcolor="black">. Атрибут bgcolor устарел на всех элементах, поэтому используйте CSS. Браузеры все еще учитывают его для старых страниц, и поэтому может показаться, что он работает.

Прозрачный фон

У каждого элемента изначально background-color: transparent, поэтому за ним виден родитель. Чтобы подкрасить блок и все равно видеть сквозь него, используйте цвет с альфа-каналом:

opacity: 0.5 тоже позволил бы видеть полосы, но заодно сделал бы бледным текст. Для полупрозрачного фона с непрозрачным текстом используйте цвет с альфой. Все способы его записать перечислены на странице про цвета.

Где рисуется цвет

По умолчанию фон доходит до внешнего края рамки (поэтому он виден сквозь пунктирную или полупрозрачную рамку). background-clip это меняет:

В первом блоке янтарный виден между штрихами. Во втором он останавливается на внутреннем крае рамки, а в третьем закрашена только область содержимого. Margin никогда не закрашивается: он всегда прозрачный.

Полосатые строки таблицы

Фон на каждой второй строке облегчает чтение широких таблиц:

background-color и сокращенное свойство background

background задает все свойства фона сразу. Любая часть, которую вы не указали, возвращается к значению по умолчанию, и на этом часто попадаются:

.hero {
  background-image: linear-gradient(#2563eb, #1e40af);
  background: #111827;          /* also resets background-image to none */
}

.hero {
  background-image: linear-gradient(#2563eb, #1e40af);
  background-color: #111827;    /* only the color; the gradient stays */
}

Используйте background-color, когда имеете в виду только цвет. Используйте background, когда задаете весь фон в одном месте, часто цвет плюс изображение; смотрите фоновое изображение.

Доступность: в паре с цветом текста

Цвет фона читается только рядом с цветом текста. Задавая одно, проверяйте другое: WCAG требует коэффициент контрастности не меньше 4.5:1 для основного текста. Темному фону нужен явно заданный светлый текст, потому что текст сохраняет унаследованный темный цвет.

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

  • bgcolor. Он устарел. Используйте background-color.
  • opacity для полупрозрачного фона. Содержимое тоже бледнеет. Используйте цвет с альфой.
  • Сокращенная запись background после background-image. Она сбрасывает изображение. Пишите background-color.
  • Ожидание, что margin покажет цвет. Margin находится за пределами фона. Для цветного пространства используйте padding.
  • Темный фон с текстом по умолчанию. Задайте и светлый color.

Часто задаваемые вопросы

Как изменить цвет фона в HTML?

Используйте свойство CSS background-color. Для всей страницы: body { background-color: #f3f4f6; }. Для одного элемента: <div style="background-color: #fef3c7;">.

Валиден ли еще bgcolor в HTML?

Нет. Атрибут bgcolor у <body>, <table> и <td> в HTML5 устарел. Браузеры все еще рисуют его для старых страниц, но правильный способ это background-color в CSS.

Как сделать цвет фона прозрачным?

Используйте цвет с альфа-каналом, например background-color: rgb(37 99 235 / 20%);. В отличие от opacity, текст внутри остается полностью видимым.

Чем background отличается от background-color?

background-color задает только цвет. background это сокращенная запись для всех свойств фона (цвет, изображение, позиция, размер, повтор, прикрепление, origin и clip), поэтому background: red; заодно сбрасывает фоновое изображение в none.

Почему цвет фона body заливает все окно?

Когда у элемента <html> нет собственного фона, браузер рисует фон body на всем холсте, даже за пределами блока body. Задайте фон html, если они должны различаться.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ