htmlbook.ru - Для тех, кто делает сайты
Статьи Книги Шаг за шагом Рецепты Форум Графика для Web
Главная страница > Статьи > Основы верстки > Фоновые рисунки

Фоновые рисунки

Влад Мержевич

Текстовая версия   Добавить комментарий

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

Фон на веб-странице

Установка фонового рисунка на веб-страницу традиционно происходит через параметр background тега <BODY>. Такой рисунок повторяется по горизонтали и вертикали, заполняя таким способом все окно браузера. Понятно, что особых вариантов для творчества здесь нет, поэтому обратимся к стилям и посмотрим, что же можно делать с помощью CSS.

В CSS имеется пять атрибутов, которые управляют фоновой картинкой: ее добавлением, положением и повторением. Однако все эти параметры заменяет одно универсальное свойство background, его и будем использовать в дальнейшем.

Добавление фонового рисунка

Добавление рисунка происходит путем установки адреса картинки через ключевое слово url. Чтобы управлять повторением картинки применяются аргументы no-repeat (нет повторения), repeat-x (повторение по горизонтали) и repeat-y (повторение по вертикали). Благодаря этому можно получить веб-страницу, приведенную на рис. 1.

Рис. 1. Фоновая картинка без повторения

Рис. 1. Фоновая картинка без повторения

Чтобы установить картинку на веб-страницу, следует добавить параметр background к селектору BODY, как показано в примере 1.

Пример 1. Фоновый рисунок

Валидный HTML
Валидный CSS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фоновое изображение</title>
<style type="text/css">
BODY {
 background:
  url("pic.gif") /* Путь к графическому файлу */
  no-repeat /* Отменяем повторение рисунка */
  30px /* Смещаем рисунок вправо */
  20px; /* Сдвигаем рисунок вниз */
}
</style>
</head>
<body>
<p>...</p>
</body>
</html>

В данном примере графический рисунок pic.gif определяется как фон веб-страницы без повторения изображения. Чтобы картинка не прилегала плотно к краям браузера, она смещается на 30 пикселов вправо и на 20 пикселов вниз от своего исходного положения.

Повторение рисунка

Благодаря тому, что можно задавать повторение фонового рисунка по горизонтали или вертикали, доступно несколько вариантов оформления веб-страниц. Например, для создания вертикальной полосы по левому краю (рис. 2) понадобится изображение, показанное на рис. 3.

Рис. 2. Повторение рисунка по вертикали

Рис. 2. Повторение рисунка по вертикали

Рис. 3. Картинка для создания фона

Рис. 3. Картинка для создания фона

Рисунок должен быть таким, чтобы по вертикали он состыковывался между собой без заметных швов, а также составлял единое целое с заданным цветом фона веб-страницы. В примере 2 приводится создание такого фонового рисунка, опять же с помощью параметра background и его аргумента repeat-y.

Пример 2. Повторение фона по вертикали

Валидный HTML
Валидный CSS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фоновое изображение</title>
<style type="text/css">
BODY {
 background:
  #fc0 /* Цвет фона веб-страницы */
  url("pic.gif") /* Путь к графическому файлу */
  repeat-y; /* Повторение по вертикали */
}
</style>
</head>
<body>
<p>...</p>
</body>
</html>

Аналогично можно делать повторение фона по горизонтали, например, создав градиент и установив его в качестве фоновой картинки (рис. 4).

Рис. 4. Использование градиента в качестве фона

Рис. 4. Использование градиента в качестве фона

Чтобы получить веб-страницу, приведенную на рис. 4, потребуется вначале сделать картинку с градиентным переходом. Ширину достаточно указать 20-40 пикселов, а высота рисунка зависит от цели документа и предполагаемой высоты содержимого веб-страницы. Не стоит также забывать, что рисунок большого размера приведет к увеличению объема графического файла. А это отрицательно скажется на скорости его загрузки и, в конечном итоге, приведет к замедлению отображения фона. Для данного случая вполне подошла картинка размером 30х200 пикселов (рис. 5).

Рис. 5. Градиентное изображение для создания фона

Рис. 5. Градиентное изображение для создания фона

В примере 3 показан код HTML для создания градиентного фона.

Пример 3. Повторение фона по горизонтали

Валидный HTML
Валидный CSS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фоновое изображение</title>
<style type="text/css">
BODY {
 background:
  url("pic.gif") /* Путь к графическому файлу */
  repeat-x; /* Повторяем фон по горизонтали */
text-align: center; /* Выравнивание блока по центру */
}

DIV {
 margin: auto; /* Отступы вокруг блока */
 width: 75%; /* Ширина блока */
 height: 90%; /* Высота блока */
 text-align: left; /* Выравнивание текста по левому краю */
 padding: 10px; /* Поля вокруг текста */
 background: white; /* Цвет фона */
}
</style>
</head>
<body>

<div>
  Lorem ipsum...
</div>

</body>
</html>

Градиентный рисунок хорошо сочетается с одноцветным блоком, поэтому в данном примере добавляется слой, в котором и отображается содержимое веб-страницы.

Добавление рисунка к тексту

С помощью фонового изображения можно автоматизировать процесс добавления рисунков к определенному тексту, например, к заголовкам. Для этого используется универсальный параметр background, который применяется к нужному селектору. В качестве значения указывают путь к рисунку и, чтобы он не повторялся, аргумент no-repeat (пример 4).

Пример 4. Добавление рисунка

Валидный HTML
Валидный CSS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Фоновое изображение</title>
<style type="text/css">
H2 {
 background:
  url('sample.gif') /* Путь к изображению */
  no-repeat /* Не устанавливать повторение фона */
  1px /* Смещаем рисунок вправо */
  2px; /* Смещаем рисунок вниз */
 padding-left: 20px; /* Отступ слева от текста */
}
</style>
</head>
<body>

<h2>Заголовок</h2>
<p>Основной текст</p>

</body>
</html>

Как показано в данном примере, рисунок можно сдвигать по горизонтали и вертикали относительно своего исходного положения, по умолчанию это левый верхний угол блочного элемента. Это позволяет установить изображение по отношению к тексту желаемым образом. Чтобы текст не накладывался на рисунок, обязательно следует добавить параметр padding-left, за счет него текст смещается вправо на указанное расстояние. Оно в каждом случае индивидуально и обычно равно ширине рисунка и желаемому отступу между изображением и текстом.

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

Рис. 6. Отображение картинки при изменении размеров текста

Рис. 6. Отображение картинки при изменении размеров текста

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

Если добавляется высокая картинка, то при уменьшении текста она «обрезается» снизу, а затем, при увеличении размера, рисунок отображается полностью.

Статья опубликована: 22.11.2005 Последнее обновление: 29.04.2008

Прежде, чем писать комментарий к статье, примите во внимание следующие моменты.

  1. Не задавайте вопросы в комментариях, для этой цели предназначен форум, где вы получите нужную помощь.
  2. Удаляются любые комментарии, которые:
    • включают множество ошибок;
    • написаны безграмотно;
    • не имеют отношения к данной статье;
    • не содержат никакой полезной информации для посетителей.
  3. Для выделения отдельных слов используйте следующие команды: [b]жирный[/b], [i]курсив[/i], [color=цвет]цветной текст[/color], [tag]тег[/tag], [var]параметр[/var], [code]пример[/code].
  4. Потренироваться в написании комментариев вы можете в песочнице.

Комментарии к статье

egor

19.05.2006

я делаю фоновые картинки с перетеканием размером не больше 1 кб за счет высот и широты, то есть: ширина от 1-5 высота больше 100 и наоборот, все гладко и красиво переливаются цвета. еще можно делать 5 на 5 пикселей.

cypr@ya.ru

Игорь

20.03.2007

И мне понравилось, кстати ждем новых статей посвещенных web 2.0 интерфейсам smile

Влад Мержевич

21.03.2007

Web 2.0 что такое мало кто понимает, зачем же еще интерфейсы про него писать.

Антон

30.03.2007

Подскажите, как решить такую задачу.

Дано: ячейка таблицы размером AxB пикселей и рисунок размером CxD пикселей (С<A, D<B). Требуется: сделать рисунок фоновым для ячейки, при этом растянув его до размеров AxB. Как этого добиться?

Поясняю: поверх этого рисунка мне нужно еще написать некий текст. Иными словами, нужен "<img width=A height=B>", поверх которого написан текст.

Влад Мержевич

02.04.2007

Антон, фоновые рисунки не растягиваются.

Оксана

15.04.2007

Доброе время суток!
Не могу разобраться с проблемой:
мне необходимо сделать повторение рисунка, который являеться частью фона, по вертикале (y)
Прописываю
<style type="text/css">
body {
background:
url("poloski.gif")
repeat-y
}
</style>
</head>
Но картинка упорно не хочет повторяться, при том что по оси оx все прекрасно повторяеться. Могут ли быть какие-либо нюансы которые надо учитывать в этом задаче?

Влад Мержевич

16.04.2007

Странно, у меня все нормально повторяется по вертикали, картинку, естественно, свою использовал. Попробуй отдельными параметрами задавать: background-images, background-repeat.

ира

26.04.2007

Оксана, вообше-то не "repeat-y" а "y-repeat"

Дядя Саша

29.04.2007

Игорь20.03.2007
И мне понравилось, кстати ждем новых статей посвещенных web 2.0 интерфейсам smile
гы)

Оксана

01.05.2007

Влад, спасибо. Все дело оказалось в самом рисунке. Я его по новому нарисовала и все теперь превосходно работает. Еще раз спасибо.
Ирина спасибо за совет, но Вы я вижу не совсем внимательно читали статью.

Евгений

29.05.2007

Есть два фоновых изображения. Возможно ли их поместить в одну ячейку таблицы справа и слева, а остальное пространство залить подходящим цветом?

Максим

30.05.2007

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

Максим

30.05.2007

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

Влад Мержевич

30.05.2007

2 Евгений
Надо внутрь ячейки поместить тег DIV и для него установить фоновый рисунок. Для самой ячейки тоже добавляется фон через стили.

Влад Мержевич

30.05.2007

2 Максим
Есть стилевые параметры background-image, background-repeat, используй их.

Тимур

08.06.2007

Здраствуйте. А можно ли фоновому рисунку задать прозрачночсть, если да, то как?

Влад Мержевич

09.06.2007

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

Дмитрий

24.06.2007

Здравствуйте.
подскажите,пожалуйста,как добавить рисунок,но в конце текста?
предполагается какой то текст,а в конце,вместо имени должен распологаться маленький рисунок?

Влад Мержевич

25.06.2007

Можно и добавить, но не через стили и фоновые рисунки, а с помощью тега <IMG>. То есть, как обычно добавляете рисунок.

Дмитрий

26.06.2007

Здравствуйте.
пробовал разместить фоновый рисунок,как показано здесь http://htmlbook.ru/faq/?a=36.работает в IE,а в "Opera" висит в правом верхнем,опускается только тогда,когда добавляешь текст.подскажите,как добиться желаемого результата?

Дмитрий

26.06.2007

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

Влад Мержевич

27.06.2007

Да, это особенность Firefox и Opera, что картинка привязывается к содержимому страницы, а не к самому окну.

Про ссылки почитайте здесь
http://htmlbook.ru/content/?id=25

Дмитрий

27.06.2007

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

Влад Мержевич

27.06.2007

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

Виталий

18.07.2007

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

Piligrim

27.07.2007

>Антон
30.03.2007
Подскажите, как решить такую задачу.
Дано: ячейка таблицы размером AxB пикселей и рисунок размером CxD пикселей (С<A, D<B). Требуется: сделать рисунок фоновым для ячейки, при этом растянув его до размеров AxB. Как этого добиться?
Поясняю: поверх этого рисунка мне нужно еще написать некий текст. Иными словами, нужен "<img width=A height=B>", поверх которого написан текст.

2Антон
Попробуйте width="100%" height="100%"

2Виталий
В стилях это делается так - position:к примеру absolute;
left:Значение в нужных вам еденицах(px,em...);для Right,Top,Bottom тоже самое.
Изображение-ссылка - <img src="путь"><a href="путь"></a></img>

Алексей

01.08.2007

to Антон


По-моему,проще воспользоваться стилями.

помогите, пожалуйста

05.08.2007

to Piligrim

По-моему, ед. способ - это расширить картинку в фотошопе до размеров ячейки
и использовать ее как фон

А у меня такой вопрос. Есть код:
<img src="*.jpg" width="600" height="xxx">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr >
<td >
&nbsp;
</td>
</tr>
</table>

если умерьшить размеры окна до размера меньше размера картинки, то таблица не растягивается на все 100. почему это так??????
Появляется какая-то область правее таблици
Как от этого избавиться???????????????????????????????????????

Влад Мержевич

07.08.2007

Таблица растягивается относительно окна браузера, а оно меньше размеров картинки. В этом случае рекомендую в стили таблицы добавить min-width: 600px.

Azazello

09.08.2007

2 Влад Мержевич
поскажите, как задавать направление движения background?
background:
url('sample.gif') /* Путь к изображению */
no-repeat /* Не устанавливать повторение фона */
1px /* Смещаем рисунок вправо */
2px; /* Смещаем рисунок вниз */ - я имею ввиду, почему именно вправо и почему именно вниз. Как быть с "влево" и "вверх"? Спасибо.

Влад Мержевич

10.08.2007

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

Kos

21.08.2007

Раздуплите недалекого!!! Хачу закругленные углы сделать а ся на сайте http://big-boot.narod.ru К тегу БОДИ я не могу такие параметры присвоить , можно вводить какието переменные или как решить эту проблемку ? ЗАРАНИЕ СПАСИБО ЗА ОТВЕТ smile

Саша

22.08.2007

Проблема. Делаю слоями рамку, внутри текст на фоне. Можно ли динамичную часть кодировать без указания высоты? т.е. чтобы div сам растягивался по содержимому текста на нужную высоту. Ипользую repeat-y для крайней центральной границы.
<div id="rightFrameTopDIV"> <!---->
<div id="rightFrameTopTOP">
<div id="rightFrameTop1"></div>
<div id="rightFrameTop2"></div>
<div id="rightFrameTop3"></div>
</div>
<div id="rightFrameTopBODY">
<div id="rightFrameTop4"></div>
<div id="rightFrameTop5">
<div id="gisdiv"><img src='http://informer.gismeteo.ua/34300-13.GIF' border=0></div >
</div>
<div id="rightFrameTop6"></div>
</div>
<div id="rightFrameTopBOTTOM">
<div id="rightFrameTop7"></div>
<div id="rightFrameTop8"></div>
<div id="rightFrameTop9"></div>
</div>
</div>
Если просто не использовать высоту, использовать float:left, то ячейки 4 и 6 пропадают. Нид Хэлп

Влад Мержевич

23.08.2007

2 Kos
Почитайте про уголки здесь:
http://htmlbook.ru/content/?id=106

Анна

30.09.2007

Спасибо Вам, за то, что Вы есть ))) Без Вашей помощи я бы пропала )))

Давид

04.10.2007

В Opera нормально, а в IE фоновый рисунок появляется только после обновления страницы. Почему?

BODY {
margin: 0px;
padding: 0px;
font-family: Veranda, Arial, sant-serif; /* Рубленый шрифт на странице */
background:
#54756b /* Цвет фона */
url("Орн.jpg") /* Путь к графическому файлу */
no-repeat
40px
67px
}

Давид

04.10.2007

Разобрался, извините.

Василий

19.01.2008

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

Dim@

20.01.2008

background Атрибут scroll - определяет подвижность/статичность фона:
scroll - фон перемещается вместе с содержимым страницы;
fixed - фоновая графика статична.

garri kaspar

24.01.2008

Влад, не подскажите как сделать такую вещь : допустим, есть шапка сайта, от нее вниз идет таблица; фон в боди задан черным (под дизайн шапки). Мне нужно вот что : есть жиф картинка, а как е? поместить с помощью css в место стыковки сайта и таблицы- чтоб картинка начиналась в шапке и заканчивалась (закрывая часть верха таблицы) на таблице?

garri kaspar

24.01.2008

извиняюсь - перепутал,вот - поместить с помощью css в место стыковки шапки и таблицы- чтоб картинка начиналась в шапке и заканчивалась (закрывая часть верха таблицы) на таблице?

Влад Мержевич

19.02.2008

Можно картинку сделать с абсолютным позиционированием и управлять положением стилевыми параметрами left и top.

Криведко

29.02.2008

Влад, поменяйте рис. 1. Там фон такой бл?клый, что абсолютно непонятны размеры картинки фона. Да и наличие картинки-фона совсем не очевидно, если не приглядываться.

Руслан

24.03.2008

Как сделать фоновую картинку в таблицу так, чтобы картинка растягивалась и сжималась по размеру таблицы? (с помощью Css)

Юрий

21.04.2008

сколько может быть фоновых рисунков?. Например можно ли сделать чтобы по углам блока были разнесены разные рисунки?

Лиля

15.05.2008

У меня вот какая проблема. Сделала фоновой рисунок, а наверху (по горизонтали) вставила таблицу с ссылками. Когда нажимаю на избранное, фон, соответственно, сдвигается вправо, а таблица остается на месте. А так как мой фоновой рисунок в виде свитка, получается какой-то бред. Не уверенна, что это можно исправить, но если можно, то как?

Дмитрий

30.07.2008

Хочу поставить фон из отдного рисунка, но так чтобы он на различных компах(с различным расширением экрана) отображался на всю ширину окна. Заведомо размер рисунка больше, чем расширение экранов.Спасибо.

Добавить комментарий

Имя
Комментарий

Сохранить имя (используется cookie)

Поиск по сайту

Основы верстки
Разделы
Теги по теме

BODY
Элемент BODY предназначен для хранения содержания веб-страницы (контента), отображаемого в окне браузера.

DIV
Элемент DIV является блочным элементом и предназначен для выделения фрагмента документа с целью изменения вида содержимого.

CSS по теме

background
Параметр позволяет установить одновременно до пяти атрибутов стиля фона. Значения могут идти в любом порядке, браузер сам определит, какое из них соответствует нужному атрибуту.

padding-left
Устанавливает значение поля от левого края содержимого элемента.

Copyright 2002–2008 Влад Мержевич, по всем вопросам пишите по адресу: vlad@htmlbook.ru

О сайте | Планы на будущее | Использование сайта | Борьба с ошибками | Технологии | Поддержать проект