Фоновые изображения и определение фона

CSS свойства определения фона позволяют управлять фоном HTML элементов.

В данной главе учебника вы узнаете о следующих CSS свойствах для определения фона элементов:

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position
  • background (краткая форма записи)

CSS свойство background-color

Свойство background-color определяет фоновый цвет элемента.

Вот так можно задать фоновый цвет для всей веб-страницы:


body {
  background-color: lightblue;
}

В CSS цвет можно задать как

  • имя цвета - например, "red",
  • HEX значение - например, "#ff0000",
  • RGB значение - например, "rgb(255,0,0)",

Подробнее о цветах рассказывается в главе нашего учебника Как использовать цвета.

Другие элементы

Фоновый цвет можно задавать для любых HTML элементов.

В следующем примере для элементов <h1>, <p> и <div> задаются разные фоновые цвета:


h1 {
  background-color: green;
}

div {
  background-color: lightblue;
}

p {
  background-color: yellow;
}

Прозрачность/непрозрачность

Свойство opacity определяет прозрачность элемента. Оно принимает значение от 0.0 до 1.0. Чем меньше значение, тем больше прозрачность:

opacity 1

opacity 0.6

opacity 0.3

opacity 0.1


Пример:


div {
  background-color: green;
  opacity: 0.3;
}

Примечание: Если к фону элемента добавляется прозрачность при помощи свойства opacity, то все дочерние элементы будут наследовать эту прозрачность. Это может привести к тому, что текст внутри полностью прозрачного элемента будет трудно читать.

Определение прозрачности при помощи RGBA

Если вы хотите, чтобы прозрачность не применялась к дочерним элементам, как в примере выше, то вы можете использовать RGBA значения цвета. В следующем примере прозрачность задается только для фонового цвета, но не для текста:

100% opacity

60% opacity

30% opacity

10% opacity


Ранее в главе Как использовать цвета вы узнали, что вы можете использовать RGB как значение цвета. Дополнительно к этому вы можете использовать RGB значение цвета с альфа-каналом (RGBA), который определяет прозрачность цвета.

RGBA значение цвета определяется CSS функцией rgba(red, green, blue, alpha). Параметр alpha - это число от 0.0 (полная прозрачность) до 1.0 (полная непрозрачность).

Подробнее о RGBA цветах вы можете прочитать в главе RGB цвета.

Пример:


div {
  background: rgba(0, 128, 0, 0.3) /* Зеленый фон с 30% непрозрачностью цвета */
}

CSS свойство background-image

Добавляя изображения к тексту, иногда возникает желание установить какое-либо изображение в качестве фонового. Для этого существует CSS свойство background-image, которое позволяет определить изображение для использования в качестве фона HTML элемента.

По умолчанию изображение дублируется, чтобы закрыть весь элемент.

Зададим фоновое изображение для всей веб-страницы:


body {
  background-image: url("paper.gif");
}

Фоновые изображения можно использовать с любыми элементами HTML, а не только с целой страницей (элемент body), что позволяет создавать простые, но яркие эффекты, вроде угловых теней.

Здесь задается фоновое изображение для элемента <p>:


p {
  background-image: url("paper.gif");
}

Очень просто увлечься фоновыми изображениями и начать лепить их везде, где только можно. Некоторые визуально эмоциональные люди могут полагать, что будет здорово прицепить в качестве фона какую-нибудь пеструю фотографии, забывая о том, что пользователям сайта приходится угадывать, напрягая зрение, что же такое там написано. Это пример крайности. И стоит помнить, что самым дружественным к пользователю является черный шрифт на белом фоне или белый шрифт на черном фоне (есть, правда, предположение, что не совсем белый или не совсем черный фон лучше, так как такое сочетание цветов не слепит).

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

CSS свойство background-repeat

По умолчанию свойство background-image отображает изображение дублируя его по горизонтали и по вертикали.

Некоторые изображения должны дублироваться только по горизонтали или только по вертикали, иначе все будет выглядеть странно.

Для того, чтобы фоновое изображение дублировалось только горизонтально, нужно добавить свойство background-repeat: repeat-x;:


body {
  background-image: url("gradient_bg.png");
  background-repeat: repeat-x;
}

Чтобы фоновое изображение дублировалось только вертикально, нужно добавить свойство background-repeat: repeat-y;


body {
  background-image: url("gradient_bg.png");
  background-repeat: repeat-y;
}

CSS свойство background-repeat: no-repeat

Для отображения фонового изображения только один раз также используется свойство background-repeat:


body {
  background-image: url("img_tree.png");
  background-repeat: no-repeat;
}

CSS свойство background-position

Вы можете определить позицию вывода фонового изображения. Для этого используется свойство background-position.

Свойство background-position может принимать значение top, center, bottom, left, right, либо процентные значения, либо сочетание этих значений.

В следующем примере фоновое изображение будет отображаться в верхнем левом углу:


body {
  background-image: url("img_tree.png");
  background-repeat: no-repeat;
  background-position: right top;
}

CSS свойство background-attachment

Свойство background-attachment определяет, должно ли фоновое изображение при прокрутки содержимого страницы оставаться на месте (значение fixed) или же прокручиваться вместе с ним (значение scroll).

В следующем примере фоновое изображение будет фиксироваться на месте:


body {
  background-image: url("img_tree.png");
  background-repeat: no-repeat;
  background-position: right top;
  background-attachment: fixed;
}

В следующем примере фоновое изображение будет прокручиваться вместе с содержимым страницы:


body {
  background-image: url("img_tree.png");
  background-repeat: no-repeat;
  background-position: right top;
  background-attachment: scroll;
}

CSS свойство background

Чтобы уменьшить количество кода, вы можете определить все свойства управления фоном в одном свойстве. Это возможно благодаря краткой форме записи свойств.

Вместо того, чтобы записать:


body {
  background-color: #ffffff;
  background-image: url("img_tree.png");
  background-repeat: no-repeat;
  background-position: right top;
}

Можно использовать свойство background:


body {
  background: #ffffff url("img_tree.png") no-repeat right top;
}

В коротком свойстве background будет следующий порядок значений:

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

Пока данный порядок значений соблюдается, можно не указывать любое значение. Обратите внимание, что в приведенных выше примерах мы не использовали свойство background-attachment, так как у него нет значения.

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

СвойствоОписание
backgroundКороткое свойство, устанавливающее все свойства фона элемента за одну декларацию
background-attachmentОпределяет, будет ли фоновое изображение зафиксировано, или оно будет прокручиваться вместе с остальным содержимым страницы
background-blend-modeУстанавливает режим наложения фонового изображения элемента на фоны других элементов
background-clipУстанавливает область прорисовки фонового изображения
background-colorОпределяет фоновый цвет элемента
background-imageОпределяет фоновое изображение элемента
background-originУстанавливает область позиционирования фонового изображения
background-positionЗадает начальное положение фонового изображения в пределах содержащего его элемента
background-repeatОпределяет, как будет повторяться фоновое изображение
background-sizeУстанавливает размер фонового изображения