Фиксированны и динамический scroll для блока по вертикали(height)

3 Июнь, 2010

вертикальный скролл, фиксированый, динамический, тянущийсяИ опять же мой пост из рубрики “вкусности на заказ“! Сегодня я расскажу об вертикальном статическом и динамическом скролле для елемента div. Можно, конечно, использовать эти два способа и для таблиц, но результат будет не тот, как и верстка таблицами =) Итак, намечаем цели.

Первое задание состояло в том, чтобы сделать фиксированый блок и если в нем много контента – справа была полоса прокрутки. Это просто сделать с помощью свойства overflow: scroll. Но погодите, не все так просто. При таком условии появится п горизрнтальная прокрутка…Что же деалать?

Решение:

1
2
overflow-x: hidden;
overflow-y: scroll;

Вот, собственно и вся магия. Ставим нужную нам фиксированную высоту, к примеру 400px и наслаждаемся нашим творением. Здесь вроде ничего сложного. Теперь перейдем ко второму заданию.

Второе задание состояло в том, что бы создать страницу с header, footer и content так, что бы полоса прокрутки ко всей странице не применялась никогда, даже если она есть и блок content бы не больше, чем окно браузера, сколько бы в нем нибыло информации и, если информации много, появлялся вертикальный scroll(так как в первом задании), но при всем этом, когда разрешение экрана большое, и контент влазит в окно без прокрутки, то scroll автоматически убирался, а блок контента тянулся и показывал весь контент без всяких скролов и hidden’ов на тексте. Мда, задачка не из легких, скажу я Вам. Здесь понадобятся не маленькие знания, но тот, кто ищет, тот всегда находит. И все же у меня все вышло. Вот ниже решение этой задачи:

Для начала как всегда создаем каркас нашей страницы(идем в файл html):

1
2
3
4
5
6
7
8
9
10
11
<div id="header">
Хедер
</div>
<div id="content">
<h1>Название h1 Название h1</h1>
<p>Текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст</p>
<p>Текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст</p>
</div>
<div id="footer">
футер
</div>

Далее идем в файл css:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
body{
margin: 0;
padding: 0;
border: 0;
overflow: hidden;/*Disable scroll for all doc*/
height: 100%;
max-height: 100%;
}
#header, #footer{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 130px; /*Height of top frame div*/
overflow: hidden; /*Disable scrollbars. Set to "scroll" to enable*/
background-color: #ccc;
color: black;
}
#footer{
top: auto;
bottom: 0;
height: 110px; /*Height of bottom frame div*/
overflow: hidden; /*Disable scrollbars. Set to "scroll" to enable*/
background-color: #ccc;
color: black;
}
#content{
top: 130px; /*Set top value to header*/
bottom: 110px; /*Set bottom value to footer*/
position: fixed;
left: 0;
right: 0;
overflow: auto;
background: #fff;
}
* html body{ <!--*IE6 hack*/<br /--> padding: 130px 0 110px 0;
}
* html #content{ /*IE6 hack*/
height: 100%;
width: 100%;
}

Теперь вставте в блок content сколько угодно текста, и вы увидете, что страница не будет прокручиваться, а текст внутри блока будет. Появится вертикальная прокрутка. И еще один очень немаловажный момент. Вы заметели, в файле стиле в самом начале для body мы прописали свойство overflow:hidden. А теперь думае логически.  Обычный scroll для всей страницы, он ведь не является внутреним элементом для body, но является частью окна и частью документа, поэтому при таком условии даже если текста будет больше, чем высота окна браузера, вертикальный скролл не будет появляться для всей страницы 100%. Очень полезныое свойство.



Вы можете посмотреть на примере как получилось у меня.

Если Вам понравилась статья и Вы хотите следить за обновлениями в блоге, то подписывайтесь через RSS, становитесь моим фолоувером в twitter. Так же, возможно, Вы хотите разместить постовые или любые другие виды рекламы. В таком случае пишите мне на ICQ:451240340

Я очень люблю читать про заработок в интернете! Мое хобби и мой любимый вид деятельности это зарабатывание денег! =) А у Вас?

Теги: , ,
На тему «Фиксированны и динамический scroll для блока по вертикали(height)» 7 комментариев:

а просто max-height для #content не подходило?? или нужно было футер тоже прижать?

Chukey | 3 Июнь 2010 в 23:19

ну а ты попробуй так сделать =) я тоже сначала подумал что все просто…а не тут то было =)э

max-height это хорошо. но как быть если контента еще больше чем max-height, а разрешение экрана дает ему в полный рост показаться…Да там подругому и никак не сделать =)

Masterix | 3 Июнь 2010 в 23:40

да верно по условию подругому не сделаешь)) по крайней мере я не нашел как)
хороший пример

Chukey | 4 Июнь 2010 в 00:34

И впрямь оригинальное решение. Мне понравилось. А Ослик как всегда отличился, даже в таком примере хаки.

TiamatInc | 4 Июнь 2010 в 11:14

Здоровская публикация!

inhomie | 6 Июнь 2010 в 14:10

Спасибо за пост! Давно искал такое решение…

Дмитрий | 5 Ноябрь 2010 в 21:18

спасибо
возьму на заметку

darmoid | 31 Январь 2011 в 18:50
451-240-340 lyash89
mrmasterix@gmail.com id811932



PR-CY.ru