Я понимаю, что цель перехода к тегам <div> из <table> имеет смысл, поскольку она более семантическая. Тем не менее, я не понимаю, какую выгоду можно получить, если вам все еще нужен блок очистки для работы макетов на основе столбцов. Например:
<!-- Note: location-info & personal-info both float left. -->
<div class = "contact">
<div class = "personal-info">
<p>
Shawn, etc, etc
</p>
</div>
<div class = "location-info">
<p><address>etc</address></p>
</div>
<br style = "clear:both" /> <!-- clearing block -->
</div>
Внешний тег <br> используется строго для описания стиля и необходим для работы макета. Разве это не сводит на нет все преимущества удаления таблиц?






Что, если я скажу вам тыне сделалнужно блокировку клиринга?
.clear-block:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clear-block {
display: inline-block;
}<div id = "wrapper" class = "clear-block">
<div style = "float:right">
Your content here
</div>
<div style = "float:left">
More content here
</div>
</div>Думаю, вы обнаружите, что волшебное слово - hasLayout - попробуйте ctrl + f для IE6 на любой из этих трех ссылок.
IE8 наконец избавился от ерунды hasLayout. Примерно 10 лет с опозданием, но надо брать то, что есть ... :)
Нисколько. Есть МНОГО других преимуществ, которых следует избегать при использовании таблиц.
Я говорю в этой конкретной ситуации, макет из 2 столбцов
Ответ применим и к этой конкретной ситуации. Намного лучше использовать то, что у вас есть, чем использовать таблицы. Таким образом, у вас будет 1 посторонний тег (который в большинстве случаев можно игнорировать), в противном случае у вас будет как минимум 10, которые нельзя игнорировать.
Кроме того, это кажется лишним, как показывает ссылка на аннакаты.
Если вы отображаете табличные данные, по-прежнему имеет больше смысла использовать таблицы, чем многие плавающие блоки div. Используйте имеющиеся у вас инструменты с умом - не используйте CSS вслепую там, где таблицы - лучший вариант.
Хех, это тоже правда, приятно видеть этот совет, означает, что люди поступают правильно, в основном :)
Верно, хотя я бы не сказал, что столы здесь лучший выбор. Я бы не назвал это табличными данными.
только OP будет знать точно. Для меня это звучит так, как будто он пытается отображать табличные данные без таблиц.
Как показывает ответ аннакаты, вам не нужны эти очищающие блоки. Но помимо этого, одним из преимуществ отказа от таблиц является то, что страница может отображаться постепенно. Таблица может быть отображена только после анализа таблицы весь, включая все ее содержимое, что может занять некоторое время, если у вас большая страница и медленное соединение. div могут отображаться немедленно, а это значит, что вы сможете представить пользователю что-то полезное гораздо раньше, чем с помощью таблиц.
Конечно, это просто приятное небольшое бонусное преимущество, это не так и не должно быть причиной в избегать таблиц (для не табличных данных).
I understand that the goal of moving towards
<div>tags from<table>makes sense since it is more semantic.
На самом деле все наоборот: переход от <table> к <div> делает ваш HTML меньше семантическим. Фактически, весь смысл элементов <div> (и <span>) должен иметь семантику нет!
Меня всегда раздражает, когда я вижу лес <div>, описанных как «семантический HTML». Нет, это не так! Это * не- * семантический HTML! Особенно, если он содержит много <div class='float-left'>, <div id='bottom'> и моих личных фаворитов <div class='paragraph'> и <span class='emphasis'>.
Не поймите меня неправильно, использование несемантических <div>, безусловно, лучше, чем использование неправильный-семантических <table>, но еще лучше было бы использовать семантически элементы верный - хотя во многих случаях проблема в том, что HTML их не предлагает. В вашем фрагменте, например, вы используете элемент <address>, но, согласно спецификация, этот элемент нет предназначен для разметки адресов! Это Только для разметки адреса автора страницы - IOW это совершенно бесполезно.
В опубликованном вами примере отсутствует много контекста, поэтому трудно сказать, но на самом деле похоже, что вы можете отображать либо табличные, либо иерархические данные, и в этом случае <table>s или <ul>s могут быть лучшим выбором.
Совершенно не имеет отношения к вашему вопросу: вы можете взглянуть на микроформаты hCard и XOXO.
В div - делении есть какой-то смысл.
Посмотрите на его пример, у него гораздо лучшая семантика, чем у табличного эквивалента. Разделы div указывают на то, что содержащаяся информация семантически связана. Такие классы, как «личная информация» семантически идентифицируют информацию. Все, что вы здесь сказали, это «если вы действительно плохо назначаете классы и используете неправильные теги, это не более семантично. Ну да!
Я лично использую хак clearfix для моих нужд очистки.
/* Clearfix */
#content:after,
.box:after {
content:'.';
display: block;
clear: both;
visibility: hidden;
height: 0;
}
#content,
.box {
zoom: 1; /* IE */
}
Обратите внимание, я просто разделяю селекторы запятыми, а не добавляю класс clearfix ко всему. Это действительно хорошо работает. Единственная проблема заключается в том, что свойство zoom специфично для IE и не проверяется, но нет побочных эффектов, которые иногда могут быть с другими свойствами, такими как overflow: auto.
Пользуюсь этим на профессиональных сайтах уже 5 лет без проблем.
Как бы то ни было, если вы показываете табличные данные (а похоже, что это так), вам все равно следует использовать таблицу.