Как растянуть фон на всю ширину окна браузера?

Метки:

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

Для этого создаем с помощью тега <DIV> два слоя, назовем их layer1 и layer2 и определим их порядок через стилевой атрибут z-index. Чем больше значение этого параметра, тем выше располагается текущий слой относительно других слоев. Также необходимо задать абсолютное позиционирование для каждого слоя (пример 1).

Пример 1. Растягиваемый фон

<!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">
   #layer1 {
    z-index: 1; /* Порядок слоев */
    width: 100%; /* Ширина слоя с фоном */
    height: 100%; /* Высота слоя с фоном */
    position: absolute; /* Абсолютное позиционирование */
    left: 0; /* Положение от левого края окна */
    top: 0; /* Положение от верхнего края */
   }
   #layer2 {
    position: absolute; /* Абсолютное позиционирование */
    z-index: 2; /* Порядок слоев */
   }
  </style>
 </head>
 <body>
  <div id="layer1">
    <img src="help.gif" width="100%" alt="">
  </div>
  <div id="layer2">
    Основное содержимое веб-страницы
  </div>
 </body>
</html>

Для слоя layer1 требуется установить ширину и высоту равную 100% и координаты левого верхнего угла задать нулевыми. Тогда не возникнет горизонтальной полосы прокрутки. Обратите внимание, что в самом теге <IMG> указана только ширина изображение без высоты. Это сделано для того, чтобы сохранить пропорции картинки, в противном случае в браузере Opera возникнут искажения.

Результат данного примера показан на рис. 1.

Рис. 1

Рис. 1. Вид фона при уменьшенном размере окна

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

Рис. 2

Рис. 2. Вид фона при увеличенном размере окна

   

Здравствуйте!
Скажите, пожалуйста, как растянуть фон так, чтобы всё содержимое страницы было на этом фоне.
Я в отдельный файл помещаю стили:
#layer1 {
z-index: 1;
width: 100%;
position: absolute;
left: 0;
top: 0;
}
#layer2 {
position: absolute;
z-index: 2;
}
в HTML-документе:
<div id="layer1">
<img src="fon2.gif" width="100%" alt="">
</div>
<div id="layer2"> далее описание содеожимого

   
   

#layer1 {
z-index: 1; /* Порядок слоев */
width: 100%; /* Ширина слоя с фоном */
height: 100%; /* Высота слоя с фоном */
position: absolute; /* Абсолютное позиционирование */
left: 0; /* Положение от левого края окна */
top: 0; /* Положение от верхнего края */
}

#layer2 {
z-index: 1; /* Порядок слоев */
width: 100%; /* Ширина слоя с фоном */
height: 100%; /* Высота слоя с фоном */
position: absolute; /* Абсолютное позиционирование */
left: 0; /* Положение от левого края окна */
top: 0; /* Положение от верхнего края */
}

Здесь чуток исправлено и добавлено для слоя #layer2 в стиле. если использовать так как написано в примере - то будет сдвиг второго слоя. Этот сдвиг видимо появляется из-за того что неуказанные параметры top,left,widgh,height устанавливаются по умолчанию.

   
   

Спасибо большое! Как раз то что искала)

   
   

Интересно конечно, но если я пишу таблицу вместо обычного текста и ее после ставлю по центру как по горизонтали, так и по вертикали, то она(таблица) все равно липнит к левому краю...

Нашел в чем проблема - left: 0; /* Положение от левого края окна */
Если аналогичную запись добавить в layer2, только равным к примеру 5%, соблюдение равного расстояния с права и лева нет. :-(

   
   

Огромное спасибо!
Для того что бы все работало, layer2 должен быть таким:
#layer2
{
position: absolute;
z-index: 2;
width: 100%;
}

   
   

УРА!!!!!!!!!!У меня получилось!!!!!Спасибо Вам огромное! Я уже отчаялась найти хоть какое-либо решение, но тут обнаружила Вашу страничку.Теперь все работает как надо!!!!!!!!!!!!!!!!;))))))))))))))))))))

   
   

спасибо огромное!!! всё получилось!!!

   
   

У мнея наоборот картинка слишком большая, я хочу чтобы на всех мониках отображалась одинаково. Вот нуна ее типа растянуть по экрану но в то-же время уменьшить вот css файл:
@charset "utf-8";

body {
margin: 0;
padding: 0;
font-size: 100.01%;
font-family: Verdana, Arial, sans-serif;
color: #9D533C;
background-color:#000000;
/*background-image:url(../images/bg.jpg);*/
background-position:center;
text-align:center;
/* min-width:100%;
height:100%;*/
}

h1, h2, h3, h4, h5, h6, p, form {
margin: 0;
padding: 0;
}

img {
border: none;
}

ul, ol, li {
padding: 0;
margin: 0;
list-style: none;
}

.clearMe {
clear: both;
line-height:0px;
}
form {
display:inline;
}

.invisible { display: none;}

   
   

Здравствуйте!
Подскажите как растянуть фоновую картинку так, что бы она не размножалась вертикальной полосой справа и горизонтальной снизу.
Сейчас у меня так.
body{
background: url('адрес картинки');background-attachment:fixed;}

   
   

2Slawa, 01.06.2009 background-repeat:no-repeat; добавь и все! А за CSS по фону спасибо!

   
   

Если все правильно понял, то background-repeat: no-repeat;

   
   

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

   
   

ДА, все здорово получается. А как можно сделать то же не для общего фона на весь экран, а КАК РАСТЯНУТЬ ФОН ТОЛЬКО НА 1 ЭЛЕМЕНТ ТАБЛИЦЫ???

   
   

Подскажи пожалуйста, как расположить второй слой по центру?

   
   

Огромное спасибо, как раз то, что искал.

   
   

Спасибо огромное этому сайту он мне оооооочень помог !!!!!!!

   
   

Спасибо огромное!)) Только подскажите пожалуйста....как фиксировать фоновое изображение в данном случае???
bgProperties="fixed" либо просто не помогает,либо я его не туда прописываю :/

   
   

Годная статья!

   
   

А как быть с ИЕ5, если картинка немного меньше размера окна?

   
   

Спасибо, очень полезная статья!
Но вот вопрос: если страница длинная - растянутая картинка закончилась и ниже фона нет.. как ее еще и повторять циклически в высоту?
Спасибо

   
   

А можно сделать на CSS чтобы при ресайзе окна картинка всегда закрывала весь экран? как здесь: http://www.alexandergusev.com/

   
   

Только третий день, как начал познавать html, и уже стал разочаровываться в background, в связи с тем, что на компе один фон на буке другой. Ваши слои с <img> порадовали, начинаю влюбляться в html, а особенно в css

   
   

У меня не получилось расположить:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<title>Пробная страница</title>
<body>
<div id="layer1">
<img src="img/peluches.jpg" width="100%" alt="">
</div>
<div id="layer2">
<img src=./img/bear.jpg width=50 height=50>
<p align=right><img src=./img/bear.jpg width=50 height=50>
<p align=center>
<h1>Текст страницы<h1>
</div>
</body>
</html>
Все становится криво, Фонов становится несколько штук.

   
   

Минуточку! А как тогда сделать чтоб и фон на всю страницу, да еще и неподвижный был! Вот как тут: http://www.kipelov.ru/

   

Отправить комментарий

  • Строки и параграфы переносятся автоматически.
CAPTCHA
Вопрос для защиты от спама.
3 + 0 =
Решите этот простой пример и введите результат. Так, для 1+3 надо ввести 4.