Каскадные Таблицы Стилей

индекс
324,89

Колонки одинаковой высоты, самый простой способ

Буржуи как обычно мудрят там, где можно сделать все намного проще.
Способы создания колонок в указаном посте слишком сложны.
Хочу рассказать про самый простой и логичный, на мой взгляд, способ сделать колонки одинаковой высоты.
Кто придумал этот способ не знаю. Но судя по комментариям к этому посту знают о нем немногие, в результате пошло мнение что таблицы в данном случае логичнее и лучше.
И так. Из html-кода:
<div class="cols">
  <div class="col1">Текст1</div>
  <div class="col2">Текст2</div>
  <div class="col3">Текст3</div>
</div>


* This source code was highlighted with Source Code Highlighter.


Сделаем колонки одинаковой высоты.
.cols{
     overflow:hidden;
     _zoom:1;/*Для 6-го IE, задаем hasLayout, на эту тему есть много постов на хабре*/
}
.cols .col1,.cols .col2,.cols .col3{
     padding-bottom:10000px;
     margin-bottom:-10000px;
}

Осталось только задать фон для колонок и сделать их плавающими. Работает везде.
Все по стандарту. Делаем большой паддинг снизу, это дает бэкграунд вниз. Ровно таким маргином компенсируем отступ. Родительский див отрезает лишнее.
Пример
UPD. _zoom:1 можно заменить на width:100%, эффект для IE6 тот же.
+108
12 июля 2009, 18:39
338

комментарии (134)

0
Denys #
Интересное решение.
Возьму на вооружение. Спасибо! В закладку! И +1!
НЛО прилетело и опубликовало эту надпись здесь
–3
homm #
> и да, я уже чувствую себя старпёром!
Это наверное потому, что вы забыли дать ссылку :)
НЛО прилетело и опубликовало эту надпись здесь
0
SlaviX_X #
А мое резюме (dayhater@gmail.com) Вам оказалось не по вкусу?
НЛО прилетело и опубликовало эту надпись здесь
–2
homm #
> ссылку на что?
Очевидно же, что на «решение, опубликованного несколько лет назад на alistapart и positioniseverything».

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

Спасибо за ссылки.
+1
homm #
Так, а вот теперь, перейдя по ссылкам мы видим, что метод описанный там использует все те же padding-bottom, margin-bottom, о которых речь в этой статье. Эх, а столько пафоса было! Я почти поверил.
НЛО прилетело и опубликовало эту надпись здесь
–1
homm #
Вы обещали решение, которое не знает большенство посетителей хабра. Или вы и имели ввиду это решение? Тогда совершенно не понятно, что вы имели ввиду именно это решение. Выглядит так, как будто вы хотели показать какое-то другое решение, о котором никто не знает. Тогда не понятно с чего вы взяли, что об этом решении не знает большенство посетителей хабра, я например знал о нем до этой статьи. И мне почемуто кажется, что это решение появилось намного раньше 2006-го года.
НЛО прилетело и опубликовало эту надпись здесь
+1
gansik #
Вы не рубите фишку. С недавних пор написание таких комментов в любой топик ИНОГДА приводит к получению плюсов. Вот народ и забавляется прокачкой кармы :)
0
CAH4A #
А давайте ставить "−" за «спасибо», без конструктива. Ведь для этого есть "+" у топика.
0
Kain_Haart #
Потому что +1 ставят не тогда когда считают коммент хорошим, а когда «О, я тоже так думаю! +1»… :(
0
Sabiko #
Что же это, вы за две с лишним недели ни одного вменяемого резюме не получили? Или это уже вторая вакансия верстальщика пошла?
НЛО прилетело и опубликовало эту надпись здесь
0
Sabiko #
На хедхантере за 24 июня была. Немного отличающаяся, правда)
А девятое это четверг.
НЛО прилетело и опубликовало эту надпись здесь
0
maxshopen #
А что — «Яндекс.Рефераты» это какой то ресурс, о котором по умолчанию обязан знать каждый IT-шник, иначе он должен ощущать комплекс неполноценности? Даже если с момента последней учебы в институте у него прошло лет пять или больше? :)

+5
skazo4nik #
Это сервис для генерации «рыбы», в т.ч. и для верстальщииков
–1
maxshopen #
Ха-ха :))
Спасибо, я бы реально сам до этого не догадался бы по названию, признаю некоторый налет тупизны на себе. Рефераты, блин. :)
Я обычно для рыбы новости использую, хватает.
0
skazo4nik #
сначала он вообще назывался Яндекс.Весна и до сих пор доступен по адресу vesna.yandex.ru/, вот уж где не совсем логично :))
+1
maxshopen #
Имхо, те же яйца, вид сбоку :)
«Весна» даже чем-то лучше, потому как из-за алогизма названия не возникает вообще никаких предположений о чем этот сервис может быть. Назвали бы как-нибудь типа «Я.Генератор» — и было бы понятно. Хотя им виднее, разумеется
0
CAH4A #
По-моему самый гениальный fish-caster — глубоко уважаемый мною Сергей Дацюк.

Правда тяжело нарыть что-либо на заранее заданную тематику…
–1
ibnteo #
Чем Вам не угодила русская статья на тему вёрстки?
Сами то небось за несколько лет так и не поделились с молодёжью секретами мастерства.
НЛО прилетело и опубликовало эту надпись здесь
–2
ibnteo #
По Вашей логике статьи тогда вообще писать не нужно, так как по большей части они будут баяном. Что бы Вы не написали, можно обязательно найти в гугле. Давайте ссылку на любую Вашу статью, и проверим в гугле, проверяли ли Вы сами уникальность идеи :)
НЛО прилетело и опубликовало эту надпись здесь
0
Denys #
Зачем минусовать?
Это один из примеров, который можно взять на заметку.
Если есть еще примеры, я их тоже возьму на заметку.
А вот как верстать и что верстать, решать буду уже сам.
+13
MexanizM #
Чуть не ослеп от вашего примера О_о
0
eternity #
Да, цветовая гамма действительно ослепляющая: голубой (не могу точно идентифицировать оттенок, может кто-то скажет как правильно его назвать), розовый и жёлтый на белом фоне.
+6
crenative #
Верстальщик бы назвал эти цвета #33FFFF, #FF33FF и #FFFF33. Вот она поэзия кода.
+7
ibnteo #
ленивые верстальщики записали бы в виде #3ff, #f3f и #ff3
0
MAGIKru #
А я бы наверно назвал исходя из состава цветовой модели CMYK — Cyan, Magenta, Yellow ;)
+3
Ordos #
Приятный глазу цвет сделать легко, f0 + 70 + 00 в любой комбинации отлично смотрится :o)
+2
glazov #
Такой прием некогда был использован на портале Liferay.
Верстка чудесным образом расползалась в Опере 9.22
0
dyakov #
Пример не разлезается вроде. Правда, я смотрел в Опере 9.21…
0
glazov #
Там было что-то вроде
padding-top:10000px;
margin-top:-10000px;

Так вот margin-top: -10000px; абсолютно точно не работал.
0
mdevils #
Версии Оперы ниже 9.27 можно не рассматривать.
НЛО прилетело и опубликовало эту надпись здесь
–1
warmrobot #
Ага, как всегда, оказалось, что буржуи не такие уж и тупые. Я тоже именно там этот способ нашёл, стоило только начать гуглить.
0
XXXVII #
Там же встречается и магическое число 32767px, применяемое для указания паддинга. Ходят легенды, что это максимальное значение, которое может воспроизвести Safari.
0
smmurf #
Только Safari 2, если не ошибаюсь (но не берусь утверждать).
–2
megahertz #
Спасибо, много времени когда-то убил, эффект был достигнут но весьма криво. Думаю, еще не раз пригодится.
–2
super #
А почему не захотели сделать колонки таблицей?
+11
zorro1211 #
Прошу вас, уже хватает на хабре холиваров!
–1
super #
Нет, не холивара ради, мне действительно не понятно почему не использовать тэг TABLE?

Автор пишет что убил много времени и получил корявый результат. Мне приходилось видеть сайты, где DIV вёрстка чудовищно разъезжалась, хотя можно было использовать TABLE и всё было-бы в порядке. Вот я и пытаюсь узнать чем обосновано такое применение DIV`ов.
+3
zorro1211 #
Автор просто высказал мнение, что данный представленный пример ему пригодится, а остальные разбирательства, которые носят скорее личный характер (зачем это, а не то и т.д.) лучше по хабрапочте выяснять, потому что данные разбирательства уже неоднократно имели место быть в комментариях и постах.
0
megahertz #
Просто давно для себя определился что таблицы — для таблиц. Ни кому это мнение не навязываю, но для себя решил твердо. Плюсы для меня лично — более ясный код и оптимизация под маленький экран (320*240 и меньше) в несколько строчек CSS.

ЗЫ: Я не верстальшик.
0
andrew_b #
Посмотрите, что было в предыдущих сериях.
Такой вопрос был задан много раз. Данный же топик выступает в роле ответа.
0
XXXVII #
Вот так намного правильнее, чем указывать один метод и навязывать его стандартом де-факто. А между тем возникают ситуации, когда данный метод не работает как нужно и приходится воспользоваться другими способами.
+2
seraph #
30 секунд поиска и вот этот пример + небольшой фикс: http://3ds.habrahabr.ru/blog/62161/
+4
3ds #
Причем недавно писал ;)
НЛО прилетело и опубликовало эту надпись здесь
–4
eternity #
Спасибо большое! а то я всегда Javascript для этой цели использовал.
–2
LDEV #
Отличный ход! На заметке :)
+3
homm #
Кто-то должен это написать.
Колонки по настоящему одинаковой высоты, самый простой способ:
<table width="100%" height="600">
<col width="33%" span="3">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
0
homm #
И еще, почему я за такой вариант: Ситуации бывают разные. Повторение фона — самый простой вариант. Зачастую нужно чтобы снизу на одинаковой высоте были дополнительные элементы. На сколько я знаю с помощью дивов без JS этот вопрос не решить.
Не поймите меня не правильно, я не предлагаю перейти на темную сторону силы верстать таблицами, просто каждый метод нужно использовать с умом. Не всегда можно для наших не симантичных браузеров сделать симантичную верстку.
+5
chikuyonok #
Повторение фона — самый простой вариант. Зачастую нужно чтобы снизу на одинаковой высоте были дополнительные элементы. На сколько я знаю с помощью дивов без JS этот вопрос не решить.

Можно решить: chikuyonok.ru/2009/06/float-columns/
0
Mordraug #
Вот этот метод с колонками мне больше всего понравился во всех отношениях. Правда его с наскока не так просто освоить :) вернее нужно просто понять и знать как оно работает.
+4
DnV #
Действительно )
Убивают просто такие доводы, типа «а если мне потом надо будет передвинуть...». Всё не предусмотришь, но кому нужны лишние костыли типа "-10000px;"? Они явно не делают код более понятным, лаконичным и красивым.

ЗЫ: Не холивара ради, но здравого смысла для.
+1
glazov #
Зачем в 128-й раз поднимать эту тему? Чтобы свои 5 копеек вставить?
Ну да, хорошо, существует возможность организовать раскладку станицы таблицей. Но есть еще масса вариантов, и в данном топике обсуждается один из них.
Блог, кстати, называется «Каскадные Таблицы Стилей». В вашем примере последних что-то не наблюдается.

P.S. И да, даже для таблиц задавать стили атрибутами типа width="100%" height="600" извращение.
0
maxshopen #
Ну это то дело легко поправимое, homm наверно просто для примера код привел в таком виде, а вообще <td class='leftcolumn'> и т.д., и вперед к каскадным таблицам стилей.
–1
maxshopen #
Как было показано выше, спектральная картина вращает межпланетный реликтовый ледник – у таких объектов рукава столь фрагментарны и обрывочны, что их уже нельзя назвать спиральными. Восход традиционно представляет собой радиант (датировка приведена по Петавиусу, Цеху, Хайсу)....
Где вы тексты то такие берете. Прям зачитался, несмотря на фон_вырви_глаз.

По существу — объект, представляющий собой нечто, состоящее из рядов и колонок одинаковой высоты называется таблицей. Чего бы его таблицей то не сверстать — хоть убей не понимаю, уж извините.

Насчет того, что «всё по стандарту» — это как раз один из тех случаев, когда все по стандарту, но через одно место.
+1
glazov #
Где вы тексты то такие берете. Прям зачитался, несмотря на фон_вырви_глаз.

Судя по всему Яндекс.Рефераты
0
dyakov #
Да. Именно, там)
0
Kain_Haart #
— Имхо использование подложных псевдо-бесконечных margin+padding сводит на нет заботу о семантичности кода.

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

— Стоит, конечно, узнать у людей сведующих, но, интуитивно, хочется пожалеть браузер от создания оъектов «чудовищных размеров», пусть даже и скрытых.

P.S.: Раз уж на то пошло, люди сведующие, подскажите, насколько это существенно для браузера?
–1
nobr #
Существенно на пару миллисекунд и на два процента загрузки ЦП. Примерно.

Вы совершенно верно отметили минусы способа, который предложил автор. Эти минусы перечёркивают все плюсы.
–4
XAMelleOH #
1. HTML в 100 раз семантичнее, чем если делать таблицами.

2. Ставьте, скажем 10000em — вряд ли вы столько текста напишете.

3. Браузеру пофиг. Любая мелкая флешка будет грузить браузер намного больше.

Минусы абсолютно незначительные. Метод рулил и будет рулить.
0
nobr #
А если на странице около тысячи товаров? Я сверстал не один веб-магазин, и, как оказалось, страницы могут состоять не только из текстов ;)
0
XAMelleOH #
Мало нулей? :)
–1
Kain_Haart #
Написано же теоритически существует возможность. От этого никакое количество нулей не спасет.
+1
Kain_Haart #
Как меня очаровывает когда в ответ на неприязнь к забиванию гвоздей микроскопом советуют «А ты им просто жахни посильнее — и всё нормально забъётся»
0
XAMelleOH #
Верстайте таблицами
0
Kain_Haart #
Спасибо, воздержусь :)
0
Kain_Haart #
Настолько, насколько может рулить костыль — пожалуй. Взял на вооружение. Но минусы остаются минусами, и не вижу, что плохого в том что я их обозначил.
+1
smmurf #
А смещение при переходе по якорям — это тоже незначительный минус, который не мешает методу рулить?
НЛО прилетело и опубликовало эту надпись здесь
–2
Kain_Haart #
Если бы здесь margin+padding использовались для оформления, а не для подпорки убогости браузера — тогда да.

Семантичность кода — это его соответствие смыслу. Как данных так и представления.

И поэтому ее оценка (того же с display:table) невозможно без учета того «зачем» это сделано.
НЛО прилетело и опубликовало эту надпись здесь
–2
Kain_Haart #
В огород «отделения содержания от оформления» камней не было :-)
Разметки документа — тоже.

Но как назвать, кроме «не семантичный код» (оформления), например, использование свойства «text-decoration: underline´;» для отрисовки таким образом верхнего бордера следующей строчки?
0
Kain_Haart #
Хотя это и не имеет столь выраженного практического значения, как семантичность самой разметки.
НЛО прилетело и опубликовало эту надпись здесь
0
Kain_Haart #
Чувствую бесполезность нашей дискуссии…

«Невозможно с помощью логики переубедить в чем-то своего оппонента, если взгляды последнего представляют собой непротиворечивую теорию, основанную на системе аксиом, отличающейся от вашей.» %)

Похоже разница в определении термина «семантика»

Я понимаю «семантику» как: раздел семиотики, рассматривающий отношение знака к обозначаемому. Как в естественных, так и в искусственных языках, к каковым относится и CSS, с помощью которого описываются аспекты отображения документа. И, следовательно, CSS код также можно рассматривать с точки зрения семантики.

Если для вас «семантика» == «применение к веб странице концепции отделения содержания от оформления», то это объясняет и «нонсенс» и «извращение».
0
MaEcTPo #
Полностью согласен с вашим опонентом.
Семантичная верстка полностью проявляет себя при выключеных стилях — в опере кнопочка «User Mode». И соответсвенно паддинги, марджины, прочая лабудень никак себя прявлять не будет и вы увидите «голую» страницу.
0
Kain_Haart #
В этом я тоже согласен со своим оппонентом. :)

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

И не только в том что проявляет себя при выключеных стилях, но и, например, при индексации страниц поисковыми системами.
+1
tenshi #
табличные макеты при выключенных стилях не разваливаются…
0
Kain_Haart #
семантика определяется разметкой документа и только ей. в этом смысл отделения содержания от оформления.
Всё же это вещи разные… пример:

<div align="right">

С точки зрения разделения содержания от оформления — неверно, но, в то же время не имеет нарицаний с точки зрения семантики.
НЛО прилетело и опубликовало эту надпись здесь
0
piumosso #
Скажите, а если я захочу что-то спозиционировать абсолютно для каждого дива, у меня получится? То есть, в действительности ли все три дива имеют одну высоту?
0
nobr #
Нет, их физическая высота разная. Просто создаётся впечатление, что одинаковая.
0
XAMelleOH #
Почему не получится? Да, высота разная, но скажем, если позиционировать от верха и боков — то очень даже получится.
0
nobr #
Подразумевается, что колонки резиновые по высоте. Разве нет?

Как бы вы, например, сделали скруглённые уголки?
0
XAMelleOH #
Вопрос был о «что-то спозиционировать».

С уголками, да — не получится.
0
nobr #
Ну, а ответ «нет» был на вторую часть вопроса, т. к. позиционировать можно практически любой элемент в любых условиях :)
+2
acy #
Как тшетно народ пытаетсся утаить холиварные нотки в диалоге :)
–3
tyv #
Оло-ло эти ваши дивы
см. вторую строчку в первой колонке

Посмотреть на Яндекс.Фотках
–1
fear86 #
Варварство.., хотя конечно с длинным URL будут проблемы.
+1
tyv #
это не варварство, это жизнь, никогда не знаешь какой к тебе контент приедет. Например, картинка.
+6
ferrari #
нет, бл#ть, пусть лучше колонка упадет или таблица разлезется.
–6
tyv #
нет блядь — колонка должна тянуться по контенту.
0
ferrari #
то есть второй вариант — полезет таблица, ну что ж, действительно — advanced level 8)
–6
tyv #
нет блядь — колонка должна тянуться по контенту.
0
tenshi #
smileg.akmedia.ru/test/row/
НЛО прилетело и опубликовало эту надпись здесь
0
tenshi #
> При первом открытии в FF3.0.11 воспроизводится баг. После F5 нормально.
во 2 небось совсем лажа… о0

> XML-way, семантика и все такое + = wft? о_0
а что не так? ;-) это элементы визуальной разметки.
smileg.akmedia.ru/?article:div.make.up
НЛО прилетело и опубликовало эту надпись здесь
0
tenshi #
это не распорка.
это «правильная резина».
НЛО прилетело и опубликовало эту надпись здесь
0
tenshi #
js используется только в качестве костыля для ие6-7
+1
t1myrkq #
Есть недостаток описанного метода: если я хочу поставить background-картинку в bottom — она видна не будет :(((
–1
lorn #
А если я захочу надеть штаны через голову, то у меня тоже ничего не получится — штаны пошиты плохо.

Всё это для конкретной ситуации, панацеи нет. Всегда будет решать голова, которая знает, как правильно надеть.

Автору топика спасибо за монетку в копилку Хабра.
0
t1myrkq #
т.е. вы хотите сказать, что это очень редкий случай для колонок с одинаковой высотой ???
0
lorn #
Я хочу сказать, что каждый способ надо использовать по ситуации и универсального среди них нет.
0
t1myrkq #
Ну, пожалуйста, используйте, я же не против. Просто указал на недостаток.
0
lorn #
Угу, вчера я воспринял ваш коммент иначе (засыпал чтоль или под впечатлением комментов выше), сегодня перечитал и уже не понял, что меня так понесло =) Всё верно.
0
t1myrkq #
! который до этого не упоминался
0
t1myrkq #
! который до этого не упоминался
+1
Bone #
Этот способ сам по себе уже очень похож на надевание штанов через голову. Я бы даже сказал, что в данном случае кроме надевания штанов через голову, вы ещё и лишаетесь возможности застегнуть ширинку.
0
lorn #
Минимум html-кода, никаких нестандартных css-свойств (кроме фикса для ИЕ) — просто и эффективно — это ли через голову?
0
Bone #
Нет, в этом плане всё отлично, просто для того, чтобы этого достичь приходится применять атрибуты, предназначенные совершенно для другого, а это выглядит как «работает и ладно»
0
t1myrkq #
Нормальный способ. Конечно не универсальный, но используется на ура.
–1
XAMelleOH #
Я, и еще несколько хабрачеловеков писали об этом методе в комментариях к к этому посту.

Почему хабралюди не обратили внимание, и не заплюсовали эти топики, это уже другой вопрос. Видимо, чтобы что-то вдолбить нужно выйти на главную. С комментов народ пользы не берет.
0
XAMelleOH #
эти топики -> эти комментарии
–1
Kain_Haart #
Наверное, потому что существенными дополнения к посту в коментариях, если ими пост не проапдейтить, тонут в куче неинформативных комментов… таких, как, например, вот этот мой :)
0
XAMelleOH #
Хоть в чем-то я с Вами соглашусь :)
0
actiongroup #
Интересный метод, но я про него где-то уже слышал еще давно.
–2
XAMelleOH #
Если все, кто о нем слышал, будут об этом кричать, то здесь будет стопицот комментов.
–1
socket378 #
такова судьба баяна.
+1
my_own_parasite #
у one true layout есть одна маленькая особенность, которая убивает возможность его использования in real world — когда вам надо сделать якорные ссылки на странице и вы перейдёте по такой ссылке на свою страницу — случится мегаглюк.
+1
MaEcTPo #
Да, и к минусам можно было бы добавить, что нельзя этим блокам бордеры снизу поставить. К сожеленью.
0
Borodean #
Браво! Метод, достойный русского .)

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