Как добавить две фоновые картинки на веб-страницу?

Раздел: Фоновая картинка
Добавление одновременно двух фоновых изображений обычно продиктовано дизайном веб-страницы. При этом, как правило, один фон повторяется по горизонтали или вертикали, а второй фон выводится без всякого повторения. Впрочем, подобные детали зависят целиком и полностью от воли дизайнера, поэтому рассмотрим универсальную технологию добавления двух фоновых картинок.
В CSS3 два фона добавляются достаточно легко с помощью стилевого свойства background, при этом настройки каждого фона задаются через запятую. Однако пока еще не все браузеры поддерживают подобную возможность, поэтому придется воспользоваться старым проверенным методом. В данном случае фоновый рисунок задается для каждого элемента отдельно, а таких элементов у нас два — HTML и BODY. К этим селекторам достаточно добавить универсальное свойство background, установив путь к графическому файлу (пример 1).
Пример 1. Селекторы HTML и BODY
<style type="text/css">
HTML {
background: url(файл 1); /* Путь к графическому файлу с первым фоном */
}
BODY {
background: url(файл 2); /* Путь к графическому файлу со вторым фоном */
}
</style>
Но здесь мы сталкиваемся с небольшой неприятностью. Фоновая картинка легко добавляется, когда используется только один селектор, но как только их становится два, возникает несколько проблем, которые нам предстоит обойти.
- При одновременном добавлении фоновой картинки к селекторам HTML и BODY, фон последнего занимает высоту, равную содержимому веб-страницы. Если имеется только одна текстовая строка, то фон будет равен ее высоте, а никак не занимать всю высоту окна браузера.
- Отступы на странице, а также вокруг элементов (например, тега <p>) заставляют фон отходить от края окна. Получается, что фон отстоит от края окна на некотором расстоянии.
- Добавление цвета фона к селектору BODY приводит к сокрытию одного из фоновых изображений.
Проблема с высотой решается добавлением свойства height со значением 100% к селектору HTML и BODY. Отступы придется обнулить, причем сделать это на самой странице и у абзаца, добавив margin: 0 к селектору BODY и P. Также можно обойтись и без обнуления отступов у абзацев, если создать контейнер с необходимыми отступами и все остальные элементы разместить в нем. Вопрос с цветом фона обходится легко, достаточно задать цвет у селектора HTML.
Рассмотрим добавление двух фоновых картинок на конкретном примере. Имеется два изображения, которые должны повторяться по вертикали, их необходимо пустить фоном по левому и правому краю веб-страницы. Также следует задать цвет фона оранжевым со значением #fc0. На рис. 1 приведено изображение для левого края (назовем его hand.png), а на рис. 2 для правого (bg-right.png).

Рис. 1. Фон для левого края
![]()
Рис. 2. Фон для правого края
Окончательный код с учетом всех замечаний приведен в примере 2.
Пример 2. Два фоновых изображения
XHTML 1.0CSS 2.1IE 7IE 8IE 9Cr 11Op 11Sa 5Fx 4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Два фоновых изображения</title>
<style type="text/css">
HTML {
background: #fc0 url(images/hand.png) repeat-y; /* Параметры левого фона */
height: 100%; /* Высота элемента */
}
BODY {
background: url(images/bg-right.png) repeat-y 100% 0; /* Параметры правого фона */
margin: 0; /* Обнуляем отступы на странице */
height: 100%; /* Высота элемента */
}
#main {
padding: 10px 20px; /* Поля вокруг содержимого */
}
</style>
</head>
<body>
<div id="main">
<p>Содержимое веб-страницы</p>
</div>
</body>
</html>
Результат данного примера показан на рис. 3.

Рис. 3. Веб-страница с двумя фоновыми картинками
Другие статьи по теме
В CSS 2 добавить одновременно два фона к одному элементу нереально, поэтому приходится вкладывать один элемент внутрь другого и для каждого задавать свой собственный фоновый рисунок. Для сложных макетов таких вложений иной раз можно насчитать около десятка. Понятно, что ни к чему хорошему такое нагромождение не приводит, но что делать? Оказывается, есть что! В CSS 3 можно одновременно добавлять несколько фоновых рисунков для любого элемента. Так что берем рисунок блока (рис. 1), режем его на части и начинаем тестировать в браузерах.
Как добавить два фоновых изображения к одному элементу?
Фоновые картинки достаточно активно используются для создания блоков, поскольку с их помощью формируется самый причудливый дизайн. В частности, можно добавлять к элементу скругленные уголки, декоративные вертикальные и горизонтальные линии, а также многое другое.
Фоновые рисунки довольно часто применяются в вёрстке сайтов и оформлении элементов из-за своих широких возможностей по настройке. Вместе с тем правило, что для каждого элемента может быть только один фон порождало сложные вложенные конструкции, цель которых лишь в добавлении пустых элементов с фоновым рисунком. Гораздо проще использовать один элемент и установить для него необходимое количество фоновых изображений, перечисляя их через запятую.
Если вам понравились материалы сайта, вы можете поддержать сайт, купив Рецепты CSS в формате CHM или в виде набора HTML-файлов за 50 р.