>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Проблемы с сайтами http://forum.mozilla-russia.org/viewforum.php?id=24 >Привязка подвала по низу со сдвигом при увеличении контента http://forum.mozilla-russia.org/viewtopic.php?id=11479 |
rowlad > 20-07-2006 15:50:16 |
Упёрся в проблему при вёрстке. Понимаю, что туплю, но видимо случай выдался клинический. |
Lynn > 20-07-2006 16:35:54 |
Я знаю три разных способа. Но в некоторых случаях не все они применимы. А ещё есть такое заклинание |
Al_H > 20-07-2006 16:39:37 |
rowlad Выделить код Код:<div class="pagemain1"> ... тут текст страницы, включая охватывающий элемент для колонок <div class="bottomplaceholder"></div> </div> <div class="bottom1"> ... тут футер </div> и CSS-код к нему Выделить код Код:HTML,BODY {height: 100%;} .pagemain1 {min-height: 100%;} * html .pagemain1 {height: 100%;} .bottomplaceholder {height: 60px; display: block; clear: both;} .bottom1 {height: 60px; margin-top: -60px;} (тут я предполагаю, что высота футера 60 пикселей) один из золотых ключиков. В режиме строгого следования стандартам обестпечивает для элемента body минимальную высоту в размер окна. Без этого div не будет масштабироваться так как нам надо. для непонятливого Експлорера >=6.x. это любой элемент, помещающийся внутри divа, имеющего высоту в страницу или больше, и при этом после содержимого страницы. Он позволяет убедиться, что текст не заедет под футер. хитрость в том, что элементы, упомянутые на странице позже, прорисовываются поверх пересекающихся с ними предыдущих. Поэтому указав для футера высоту и такое же верхнее поле, только отрицательное, мы можэем быть уверены, что на странице он не займет место под 100%м divом, но прорисуется над ним, даже в Експлорере. Выделить код Код:HTML,BODY {height: 100%;} .pagemain1 {min-width: 770px; min-height: 100%;} * html .pagemain1 {height: 100%;} .bottomplaceholder {height: 60px; display: block; clear: both;} .bottom1 {min-width: 770px; height: 60px; margin-top: -60px;} * (если Вы хотите задать минимальную ширину для Internet Explorer, это делается разными способами, в том числе через не проходящее валидатор expression, но это совсем другая сказка) |
rowlad > 20-07-2006 16:40:26 |
Lynn Добавлено Чтв 20 Июл 2006 16:43:55 : |
Al_H > 20-07-2006 16:47:22 |
rowlad |
rowlad > 20-07-2006 16:50:47 |
Al_H |
Al_H > 20-07-2006 17:03:39 |
В области страницы, которая высотой с окно, если контента меньше, или с контент, если его больше высоты окна, лежит фон. Задается он, допустим, в том самом divе со 100% высотой. Предположим, что должны быть два фона наложены один на другой. Тогда один из фонов привязывается к body. А если третий - его куда? По идее, нужно в основной div поместить еще один, но вот его-то не сделать 100% по высоте. То есть сделать - для IE и для Gecko. Простейший пример: по середине страницы вьется змейка на фоне, слева еще одна змейка, и справа - еще одна. Страница 100% по ширине, то есть не фиксированная. |
rowlad > 20-07-2006 17:17:57 |
Al_H |
Al_H > 20-07-2006 17:26:30 |
И подкладывать эти три дива под контент? А если фон должен быть по всей странице и тот и другой и третий, а не колонками? Добавлено Чтв 20 Июл 2006 17:31:06 : |
Lynn > 20-07-2006 17:36:06 |
Al_H |
Al_H > 20-07-2006 18:04:47 |
С удовольствием прочел статью. Она написана интересным литературным языком, содержит весомые доводы, видна горячая убежденность автора. Интересная статья, особенно некоторые моменты. Добавлено Чтв 20 Июл 2006 18:08:24 : |
Al_H > 21-07-2006 11:08:15 |
P.P.S. На самом деле, подходит только div верхнего уровня, содержащий весь контент. Все вложенные divы не будут становиться 100% от высоты документа, потому что height и min-height не задают высоту в процентах от высоты документа, они привязаны к окну. Точно по той же причине нельзя разместить рядом несколько divов 100%ной высоты - они будут разной высоты, если тот, который содержит весь контент, растянется больше высоты окна. |
rowlad > 22-07-2006 21:20:44 |
Al_H Выделить код Код:<!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=windows-1251" /> <title></title> </head> <body> <style type="text/css"> html, body { margin-top: 0; margin-bottom: 0; margin-left: 0; margin-right: 0; width: 100%; } div#bg1 { width: 100%; position: relative; background-color: #00FF7F; } div#bg2 { position: relative; width: 66%; margin-left: 34%; background-color: #B0C4DE; } div#bg3 { position: relative; width: 50%; margin-left: 50%; background-color: Aqua; } div#cont { position: relative; width: 300%; margin-left: -200%; } </style> <div id="bg1"><div id="bg2"><div id="bg3"> <div id="cont"> test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test </div> </div></div></div> </body> </html> ЗЫ |
Al_H > 23-07-2006 03:12:35 |
Во-первых, в разных браузерах отображается по-разному. Во-вторых, три вложенных divа по высоте контента можно сделать - это понятно. Выделить код Код:HTML,BODY {height: 100%;} DIV.pagemain1,DIV.pagemain2,DIV.pagemain3 {min-height: 100%; background-image: url(bg1.gif); background-position: left top; background-repeat: repeat-x;} * html DIV.pagemain1,* html DIV.pagemain2,* html DIV.pagemain3 {height: 100%;} DIV.pagemain2 {background-position: right top;} DIV.pagemain3 {background-image: url(bg3.gif); background-position: center top;} Но это не срабатывает из-за понимания 100% высоты. |
rowlad > 23-07-2006 12:35:09 |
Al_H
Перечисли набор браузеров в которых вы обычно проверяете. (в тех, что я назвал всё одинаково)
А это похоже и есть основная проблема и обходится она, спокойно и без сложностей, имхо, пока только табличной вёрсткой. |
rowlad > 23-07-2006 13:17:06 |
Al_H |
Al_H > 24-07-2006 11:28:29 |
Вот пока что получается что так. Но в CSS, в отличие от таблиц, есть элемент фантастики. То, что считалось невозможным, оказывается возможным. Например, центрирование навигационной панели. Или сайт по высоте не меньше окна. |
rowlad > 24-07-2006 12:15:19 |
Al_H
Это-то понятно, но вот решение упорно прячется. Уже вариантов с десяток перепробовал разных, только видно не время ещё для наступления чуда. Не выходит каменный цветок... Добавлено Пнд 24 Июл 2006 12:38:13 : Выделить код Код:<!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=windows-1251" /> <title></title> </head> <body> <style type="text/css"> div#bg_1 { background-image: url(img1.png); height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: 0; } div#bg_2 { background-image: url(img2.png); height: 100%; margin-left: 34%; position: absolute; top: 0; width: 66%; z-index: 0; } div#bg_3 { background-image: url(img3.png); height: 100%; margin-left: 50%; position: absolute; top: 0; width: 50%; z-index: 0; } div#bg1 { background-image: url(img1.png); position: relative; width: 100%; } div#bg2 { background-image: url(img2.png); margin-left: 34%; position: relative; width: 66%; } div#bg3 { background-image: url(img3.png); margin-left: 50%; position: relative; width: 50%; } div#cont { margin-left: -200%; position: relative; width: 300%; } html, body { height: 100%; margin-bottom: 0; margin-left: 0; margin-right: 0; margin-top: 0; width: 100%; } </style> <div id="bg_1"><div id="bg_2"><div id="bg_3"></div></div></div> <div id="bg1"><div id="bg2"><div id="bg3"><div id="cont"> test test test test test test test test test test test test </div></div></div></div> </body> </html> |
Al_H > 24-07-2006 14:18:23 |
Боюсь, опять не работает. В Firefox 1.5. Можно ссылку на работающую версию (включая фоны)? |
rowlad > 24-07-2006 15:10:27 |
Al_H |
Al_H > 24-07-2006 16:19:51 |
А почему в части браузеров, включая Internet Explorer, в любом случае полосы прокрутки, в том числе горизонтальная? Кроме того, рецепт не работает во всех Операх, кроме девятой. |
rowlad > 24-07-2006 16:30:21 |
Al_H Добавлено Пнд 24 Июл 2006 16:36:25 : Добавлено Пнд 24 Июл 2006 16:41:05 : Выделить код Код:<!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=windows-1251" /> <title></title> </head> <body> <style type="text/css"> div#bg_1 { background-image: url(img1.png); height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: 0; } div#bg_2 { background-image: url(img2.png); height: 100%; margin-left: 33%; position: absolute; top: 0; width: 66%; z-index: 0; } div#bg_3 { background-image: url(img3.png); height: 100%; margin-left: 50%; position: absolute; top: 0; width: 50%; z-index: 0; } div#bg1 { background-image: url(img1.png); position: relative; width: 100%; } div#bg2 { background-image: url(img2.png); margin-left: 33%; position: relative; width: 66%; } div#bg3 { background-image: url(img3.png); margin-left: 50%; position: relative; width: 50%; } div#cont { margin-left: -200%; position: relative; width: 300%; z-index: 1; } html, body { height: 100%; margin-bottom: 0; margin-left: 0; margin-right: 0; margin-top: 0; width: 100%; } </style> <div id="bg_1"><div id="bg_2"><div id="bg_3"></div></div></div> <div id="bg1"><div id="bg2"><div id="bg3"><div id="cont"> test test test test test test test test test test test test </div></div></div></div> </body> </html> |
Al_H > 25-07-2006 18:26:42 |
В Опере при недостатке контента все равно появляется прокрутка. |
Lain_13 > 25-07-2006 19:45:40 |
Справа в ФФ2.0б1 появилась полоска в 1% шириной с тем же фоном, что и в первой... видимо зря вы меняли 34% на 33%... Ж) |
rowlad > 25-07-2006 19:52:16 |
Lain_13
Однозначно пристрелить нафиг! Хочется, чтобы единый стиль для всех был, а единственное стопроцентное решение похоже, это подкладка под каждый браузер своего стиля через скрипт, отчего на душе грустно... |
Al_H > 25-07-2006 20:27:22 |
Нет, это не метод. Проблемы с 100% шириной обычно решаются. |
rowlad > 25-07-2006 20:48:14 |
Al_H |
Al_H > 26-07-2006 00:14:19 |
Я проблему трех фонов решал вообще экзотическим способом. Два фона распределял между body и divом верхнего уровня, а еще один, который должен был прижиматься к низу страницы, добавлял отдельным слоем и z-indexом помещал его под контент. Способ идиотский, но работает в 10 браузерах, в которых я тестировал. |
rowlad > 26-07-2006 00:23:06 |
Тоже вариант. В любом случае неплохая разминка для мозгов получилась. |
Al_H > 26-07-2006 10:23:13 |
А представьте, когда не разминка для мозгов, а на работе верстка, и сдавать вечером. |
Denton > 26-07-2006 10:52:29 |
Lynn пишет
Хыы, пытался однажды использовать Equal Height Columns, но столкнулся со множеством проблем. Последним гвоздем стали якоря в Firefox 1.5. Кстати я писал об этой проблеме автору, но соответствующий аппендикс появился лишь около месяца спустя... |
Al_H > 26-07-2006 12:30:06 |
Denton |
Denton > 29-07-2006 03:10:31 |
Al_H пишет
Мне пришлось делать через JS. Юзаю некий скрипт от Project Seven, а абсолютное позиционирование элементов напрочь убило подвал. Видимо придется возвращаться к старым добрым и самое главное проверенным Faux Columns. |
Al_H > 29-07-2006 11:30:15 |
Нуууу через JavaScript - неспортивно. Вообще большинство задач решаются через HTML+CSS, например, раньше я меню центрировал скриптом, теперь знаю как сделать это на CSS. Когда же наконец браузеры будут поддерживать CSS3? |
Denton > 29-07-2006 16:03:11 |
Al_H пишет
Сам понимаю, что неспортивно. На счет центрирования — http://www.umade.ru/resources/css/deadc … entre.html, это? А об CSS3 вообще можно забыть лет эдак ещё на 5 или 6 — до тех пор пока осел своим черепашьим шагом не освоит его. И даже тогда предыдущие его версии будут продолжать пить кровь веб-дизайнерам... |
Al_H > 29-07-2006 22:33:43 |
Да, это точно. |