В чем преимущество безтабличного дизайна, если вам нужно убирать блоки повсюду?

Я понимаю, что цель перехода к тегам <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> используется строго для описания стиля и необходим для работы макета. Разве это не сводит на нет все преимущества удаления таблиц?

Как бы то ни было, если вы показываете табличные данные (а похоже, что это так), вам все равно следует использовать таблицу.

Akrikos 18.02.2009 21:55
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
9
1
1 974
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Что, если я скажу вам тыне сделалнужно блокировку клиринга?

.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>

JSFiddle

Думаю, вы обнаружите, что волшебное слово - hasLayout - попробуйте ctrl + f для IE6 на любой из этих трех ссылок.

annakata 02.01.2009 20:17

IE8 наконец избавился от ерунды hasLayout. Примерно 10 лет с опозданием, но надо брать то, что есть ... :)

jalf 02.01.2009 20:22

Нисколько. Есть МНОГО других преимуществ, которых следует избегать при использовании таблиц.

Я говорю в этой конкретной ситуации, макет из 2 столбцов

Shawn 02.01.2009 20:08

Ответ применим и к этой конкретной ситуации. Намного лучше использовать то, что у вас есть, чем использовать таблицы. Таким образом, у вас будет 1 посторонний тег (который в большинстве случаев можно игнорировать), в противном случае у вас будет как минимум 10, которые нельзя игнорировать.

Vinko Vrsalovic 02.01.2009 20:12

Кроме того, это кажется лишним, как показывает ссылка на аннакаты.

Vinko Vrsalovic 02.01.2009 20:13

Если вы отображаете табличные данные, по-прежнему имеет больше смысла использовать таблицы, чем многие плавающие блоки div. Используйте имеющиеся у вас инструменты с умом - не используйте CSS вслепую там, где таблицы - лучший вариант.

Хех, это тоже правда, приятно видеть этот совет, означает, что люди поступают правильно, в основном :)

Vinko Vrsalovic 02.01.2009 20:16

Верно, хотя я бы не сказал, что столы здесь лучший выбор. Я бы не назвал это табличными данными.

jalf 02.01.2009 20:20

только OP будет знать точно. Для меня это звучит так, как будто он пытается отображать табличные данные без таблиц.

Eran Galperin 02.01.2009 20:36

Как показывает ответ аннакаты, вам не нужны эти очищающие блоки. Но помимо этого, одним из преимуществ отказа от таблиц является то, что страница может отображаться постепенно. Таблица может быть отображена только после анализа таблицы весь, включая все ее содержимое, что может занять некоторое время, если у вас большая страница и медленное соединение. 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 - делении есть какой-то смысл.

alex 01.03.2009 02:14

Посмотрите на его пример, у него гораздо лучшая семантика, чем у табличного эквивалента. Разделы div указывают на то, что содержащаяся информация семантически связана. Такие классы, как «личная информация» семантически идентифицируют информацию. Все, что вы здесь сказали, это «если вы действительно плохо назначаете классы и используете неправильные теги, это не более семантично. Ну да!

Draemon 31.07.2009 16:53

Я лично использую хак 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 лет без проблем.

Другие вопросы по теме