Недавно мне задали вопрос, как бы я сделал в макете колонки одинаковой высоты. Предложил использовать способ с нижними «паддингами» и «маргинами». Или, русским языком – «полями» и «отступами».
Код HTML:
<div class="cols">
<div class="col1">Налево пойдешь – коня потеряешь</div>
<div class="col2">Прямо пойдешь – лбом упрешься</div>
<div class="col3">Направо пойдешь – лучше не ходи..</div>
</div>
Стили CSS:
.cols{
overflow:hidden;
width:100%;/* Задать свойство hasLayout для IE6;
Можно использовать _zoom:1 (невалидное свойство) */
}
.cols .col1,.cols .col2,.cols .col3{
padding-bottom:10000px;
margin-bottom:-10000px;
}
UPD 2009.08.07
Стили CSS для отображения в виде колонок с разным цветом фона:
.cols .col1{width:25%; float:left; background:#999999;}
.cols .col2{width:50%; float:left; background:#E0E9EF;}
.cols .col3{width:25%; float:left; background:#5588AA;}
Пример реализации с Хабрахабра.
23 Комментариев :
Во всех ие появляется отсупт в 10000 пикселей. а в гугл хром тоже коряво отображается.
А вот опера и фаерфокс отображают нормально.
Корректно отображается в Firefox, Chrome, Opera, Safari, а так же в IE 5.5, 6, 7 и 8.
Если документ – действительно HTML.
Единственное, что могу еще добавить – это стили для отображения колонок. Без них как-то непонятно.
А если документ XHTML?
Пытаюсь использовать данный метод в шаблоне Joomla, так в IE8 колонка тянется далеко за футер.
Это и есть для XHTML, только по этой спецификации и верстаю. Работает во всех браузерах, как описано; как в Transitional, так и в Strict версиях.
Может, стили где-то перекрываются?
Нет, стили не перекрываются. :(
Единственная разница, что я делаю 2 колонки (левая и основная).
Кстати, обе колонки тянутся вниз. Это я понял, когда основной колонке добавил цвет.
Вот бы глянуть :)
С удовольствием покажу, но как вставить сюда код? А то ругается на меня: "Ваш код HTML не может быть принят: PHP, ASP, and other server-side scripting is not allowed." :(
Нет уж, в комменты мне этого добра не надо.
Размести онлайн или выложи получившийся код на Пасти.
http://pastie.org/private/fiagj4hiqo9fp3mnh4qq
http://pastie.org/private/xvigok1dg7zohsimwc4oa
Вроде так, если ничего не напутал спросонья. :)
Сделал одной страницей. IE показал фигню, но проблема была не в высоте колонок.
http://pastie.org/private/gfzzld4rd6pdy5cmr54q
Мои пометки в CSS с ремаркой REM:
Благодарю!
Отдельным файлом работает, в теме Джумлы нифига не работает. Буду рыть.
Кстати, а в чем была проблема, которую нашли вы?
Ничего не получается нарыть. :(
Вот здесь сохранил код страницы, убрал все лишнее, и перенес стили в файл с кодом.
http://pastie.org/private/9twkt1tddaqeudtkjxe1kw
В прошлый раз в IE левая колонка уползала вправо.
Если отключить position: relative, то в Internet Explorer отображается как задумано:
.middle_container .column {
/* position: relative;*/
}
P.S. а xml:lang="it-it" (язык: итальянский) это так и должно быть?
Да, язык итальянский.
Кстати, включаю в IE8 режим совместимости с предыдущими версиями - показывает, как надо. Отключаю - "индийское жилище" (с)
[quote]Если отключить position: relative, то в Internet Explorer отображается как задумано:[/quote]
Дико благодарен! Теперь, действительно, показывает, как надо и в режиме совместимости и без оного.
Будете в Италии, звоните, угощу пивом. :)
Пожалуйста! К сожалению, в солнечную Италию в ближайшее время вряд ли, вряд ли :(.
Да, и в XHTML «одинарные» теги (img, br, hr) должны быть закрыты: <br />.
И ко мне лучше на «ты»
(надо будет вынести это в футер дабы не повторяться).
Ок! На ты, так на ты. :)
Про теги я знаю, просто спешил. :)
Теперь вот думаю, как сделать, чтобы нижняя часть обеих колонок была с рамкой и отступом, как по бокам и вверху.
Привет!
Это опять я. :)
Возик вопрос, как сделать, чтобы внутри такой колонки дочерний div всегда прижимался к низу родительского, не зависимо от объема информации в соседней колонке? bottom:0 не помогает. :(
С уважением,
Андрей из Италии. :)
Привет, Андрей!
Делал я, кажется, что-то подобное месяца полтора назад. Тогда пришлось использовать Javascript. Постараюсь раскопать исходный пример на новой системе и что-нибудь подскажу.
Буду весьма благодарен. :)
Я помню. Но пока нет возможности поразбираться.
Есть быстрый совет: чтобы не плясать с джаваскриптом и кроссбраузерными премудростями CSS, можно разместить нужный «плавающий» (точнее – «тонущий») элемент в самом нижнем блоке. И отпозиционировать его используя position:relative;
Благодарю!
Обязательно попробую :)
С уважением,
Андрей
дякую за дуже просто і елегантне рішення
Отправить комментарий
Жги!