Таблицы вместо DIV

Possible Duplicate:
Why not use tables for layout in HTML?

При каких условиях следует выбирать таблицы вместо DIV при кодировании HTML?

CSS: вызовы CSS-P
KMån 26.03.2011 21:55

Я нашел этот ответ очень полезным

Juanito 11.03.2015 11:42
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
116
2
18 068
24
Перейти к ответу Данный вопрос помечен как решенный

Ответы 24

Я считаю именно табличное содержание. Например, если вы распечатали таблицу базы данных или данные, подобные электронным таблицам, в HTML.

Обычно я выбираю таблицы для отображения информации о типе формы (имя, фамилия, адрес и т. д.), Где важно выстраивать метки и поля в нескольких строках. DIV я использую для верстки.

Конечно, таблица обернута в DIV :)

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

<input id="firstName">
. CSS can then be used to fix the width of the label elements.
Richard Ev 27.11.2008 14:49

Но разве поправить ширину не еще более неправильно? Ширина должна быть произведена на размер шрифта, особенно. для учета доступности и различий в выходных носителях. И нужно определять больше соотношений ширины (и, возможно, минимальных / максимальных размеров в подходящих единицах), а не абсолютных размеров.

StaxMan 03.05.2009 06:21

А фиксировать ширину неудобно, когда вам нужно интернационализировать сайт и вы не знаете, как долго будет длиться метка на каждом языке. По крайней мере, при использовании стола это будет (по иронии судьбы) более плавным.

Damo 12.06.2009 12:27

Это моя проблема с макетами div. Мне кажется странным рекомендовать div вместо таблиц, пока вы не создадите набор div, который будет автоматически перемещаться как таблицы.

jmucchiello 13.11.2009 23:51

@Richard, IMO, списки лучше, чем серия div. Комбинация OL / LI более семантически правильна. @Damo, фиксированная ширина не означает фиксированную высоту. Если каждая строка может расширяться для размещения обернутого текста, это обычно не проблема. Как вы думаете, как не веб-приложения обрабатывают метки полей при переводе?

Chris 20.05.2010 06:52

Когда данные, которые я представляю, действительно табличны.

Мне кажется смешным, что некоторые веб-дизайнеры использовали div для табличных данных на некоторых сайтах.

Еще одно использование, которое я мог бы использовать, - это формы, в частности, пары label: textbox. Технически это можно было бы сделать в блоках div, но гораздо проще сделать это в таблицах, и можно утверждать, что пары метка: текстовое поле на самом деле являются табличными по своей природе.

Пары метка / текстовое поле должны использовать

Joel Coehoorn 08.09.2008 18:31

I agree with Joel on this one. The pairing is built into the semantics () и с правильным css с этим можно справиться очень чисто

Rob Allen 17.09.2008 20:58

Хотя вам не обязательно использовать таблицу, это «табличные данные». Представьте себе заголовки «Имя поля» и «Значение» в верхней части столбцов. Я также видел, как это делалось со списками определений, которые выражают аналогичные отношения "ключ-значение".

Roger Pate 30.11.2009 06:48

Нет, разница в том, что комбинация Label / TextBox позволяет вам представить его как табличный макет, если вы хотите, или нет, если вы хотите что-то другое. Используя таблицу силы в табличной компоновке, намного сложнее изменить ее позже, если вы решите пойти в другом направлении.

GalacticCowboy 01.07.2010 00:35

Обычно, когда вы не используете таблицу для макета.

Таблицы -> данные

Divs -> макет

(в основном)

Но данные могут отображаться и другими способами, помимо сетки, и для этого с помощью CSS вы можете сделать

не похоже на сетку. Однако я вместо этого резервирую
только для данных в форме сетки. В противном случае я использую
потому что навороченный CSS на
может быть сложно с кросс-браузерной совместимостью.
JohnB 22.06.2010 04:12

Если вы хотите иметь семантически правильный HTML, вам следует использовать таблицы только для табличных данных.

В противном случае вы используете таблицы для всего, что хотите, но, вероятно, есть способ сделать то же самое с помощью div и CSS.

Таблицы были разработаны для табличного содержимого, а не для макета.

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

1) Для отображения табличных данных. Календарь - это один из примеров табличных данных, которые поначалу не всегда очевидны.

2) Я работаю в медицинской компании, выставляющей счета, и почти вся верстка для нашей внутренней работы выполняется с помощью CSS. Однако время от времени мы получаем бумажные формы от страховых компаний, которые должны использовать наши биллеры, и программа преобразует их в формат html, который они могут заполнять и распечатывать через интранет. Чтобы формы были приняты, они должны очень точно соответствовать оригинальной бумажной версии. Для них просто вернуться к таблицам.

Согласитесь с Томасом - общее эмпирическое правило состоит в том, что если это имеет смысл для электронной таблицы, вы можете использовать таблицу. В противном случае нет.

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

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

Вся эта штука «Таблицы против дивизионов» едва не попадает в цель. Это не «таблица» или «div». Речь идет об использовании семантического HTML.

Даже тег div играет лишь небольшую роль на хорошо продуманной странице. Не злоупотребляйте этим. Вам не понадобится так много, если вы правильно составите свой html. Такие вещи, как списки, наборы полей, легенды, метки, абзацы и т. д. Могут заменить большую часть того, для чего часто используются div или span. Div следует использовать в первую очередь, когда имеет смысл указать логическое division, и использовать его только для дополнительного макета, когда это абсолютно необходимо. То же самое и с таблицей; используйте его, когда у вас есть табличные данные, но не иначе.

Тогда у вас будет более семантическая страница, и вам не нужно столько классов, определенных в вашем CSS; вместо этого вы можете нацеливать теги напрямую. Возможно, наиболее важно то, что у вас есть страница, которая будет намного лучше оцениваться Google (анекдотично), чем эквивалентная таблица или страница с большим количеством div. Прежде всего, это поможет вам лучше связаться с частью вашей аудитории.

Итак, если мы вернемся и посмотрим на это с точки зрения таблицы и div, я считаю, что мы фактически подошли к точке, где div используется слишком часто, а таблица - недостаточно. Почему? Потому что, когда вы действительно думаете об этом, есть много вещей, которые попадают в категорию «табличных данных», которые, как правило, упускаются из виду. Например, ответы и комментарии на этой самой странице. Они состоят из нескольких записей, каждая с одним и тем же набором полей. Они даже хранятся в таблице sql server, чтобы кричать вслух. Это точное определение табличных данных. Это означает, что тег таблицы html будет абсолютно хорошим семантическим выбором для размещения чего-то вроде сообщений здесь, в Stack Overflow. Тот же принцип применим и ко многим другим вещам. Возможно, не стоит использовать тег таблицы для настройки макета из трех столбцов, но, безусловно, его можно использовать для сеток и списков ... за исключением, конечно, тех случаев, когда вы действительно можете использовать ol или ul ( list) теги.

Согласовано. Много лет назад, когда я впервые отошел от макетов, основанных на таблицах, мне в голову вверлила целая мантра «используйте div». Полученный код был еще менее семантическим. Как только вы познакомитесь с HTML и всем, что он предлагает, вы научитесь писать осмысленный код, и все станет просто.

nickf 16.09.2008 09:08

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

nezroy 29.01.2009 22:48

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

Joel Coehoorn 30.01.2009 01:07

Интересно посмотреть, где большие сайты используют таблицы. Получите подключаемый модуль WebDeveloper для Firefox и используйте функцию, которая позволяет создавать схемы таблиц. Затем переходите на большие сайты. Вы увидите столы в некоторых интересных местах. Например, у Amazon есть таблица, в которой показано переменное количество товаров в зависимости от того, насколько широко растянуто окно. Почти все лучше всего делать в виде div, но в некоторых сложных случаях лучше использовать таблицу, если учесть старые браузеры.

Nosredna 10.06.2009 18:21

Крупные веб-сайты, такие как Amazon и многие другие, подтвердят, что обратная совместимость и разработка будущего Интернета также необходимы. Конечно, вы не увидите, чтобы Amazon велел своим пользователям обновить свой браузер, это почти нелепо, если не саморазрушительно, если они попытаются сделать такую ​​вещь. Очевидно, что многие из ваших «безбашенных» евангелистов, которые придерживаются концепции прямой совместимости, не обращая внимания на старые и ограниченные браузеры / клиенты, не работали на веб-сайтах с высоким трафиком и объемом, где обратная совместимость является обязательной.

DoctorLouie 21.01.2010 01:31

Я не могу согласиться с тем, что StackOverflow использует таблицу для разделения сообщения и комментария. По сути, у меня есть правило большого пальца: если в таблице есть только теги tr, используйте вместо них div.

Fitzchak Yitzchaki 07.03.2010 23:09

@Mendy - я не говорю, что StackOverflow использует их правильно, но я говорю, что если они в розыске потратят время на то, чтобы построить его таким образом, это правильный вид контента для него.

Joel Coehoorn 08.03.2010 01:44

@Joel Coehoorn Несмотря на то, что я согласен со злоупотреблением DIV, я бы придерживался ТАБЛИЦ в ТАБЛИЧНЫХ данных. Хотя структура SO сегодня может быть немного табличной, сами ДАННЫЕ не ТАБЛИЧНЫЕ. Так что столы были бы в стороне.

Frankie 14.06.2010 08:59

@Joel: Я часто думал о том, что вы говорите, используя

для отображения данных даже в формате без сетки. Я неплохо разбираюсь в CSS, но добиться кроссбраузерной совместимости с и кажется, доставляет мне больше всего проблем (это только у меня ??). Тем не менее, я все еще мысленно мастурбирую, использовать ли
элементы. Мне,
для данных в формате без сетки.
может быть непросто.
JohnB 22.06.2010 04:18

@JohnB - Я не говорю, что вы должен используете таблицу для несеточных макетов. Просто это может быть приемлемым выбором с точки зрения семантический чаще, чем мы думаем.

Joel Coehoorn 23.06.2010 00:52

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

Таблицы были введены в HTML 3.2, вот соответствующий параграф из спецификации по их использованию:

[tables] can be used to markup tabular material or for layout purposes...

«или для целей макета» - такого рода опровержение мифа о том, что таблицы никогда не предназначались для макета разработчиками HTML.

Matthew Lock 09.03.2010 12:33

@Matthew: HTML 3.2 полон презентационного html, такого как FONT-tag, BGCOLOR-attribute и т. д. Это был компромисс в то время (потому что эти теги были введены Netscape и широко использовались), но презентационный html никогда не считался хорошим практика, и большая часть из них снова устарела в HTML 4.

JacquesB 29.05.2011 21:39

Таблицы использую в двух случаях:

1) Табличные данные

2) Каждый раз, когда я хочу, чтобы мой макет динамически изменял свой размер в соответствии с его содержимым

Если ваши данные могут быть размещены в двумерной сетке, используйте <table>. Если не может, не надо. Использование <table> для чего-либо еще - это хитрость (хотя часто и без подходящих альтернатив, особенно когда речь идет о совместимости со старыми браузерами). Нет с использованием <table>за что-то, что явно должно быть одним, также плохо. <div> и <span> подходят не для всех; фактически, будучи совершенно бессмысленными на семантическом уровне, их следует избегать любой ценой в пользу более семантических альтернатив.

Что ж, таблица также не имеет явного семантического значения или неявного. Он относится к структурным тегам, а не семантическим. Конечно, div и span еще более абстрактны, поскольку являются анонимными блок-заполнителями / встроенными заполнителями больше, чем что-либо еще.

StaxMan 03.05.2009 06:22

One other use I would have for it would be forms, particularly label : textbox pairs. This could technically be done in div boxes, but it's much, much easier to do this in tables, and one can argue that label:textbox pairs are in fact tabular in nature.

Я вижу, что это изрядное количество, особенно среди разработчиков MS. И в прошлом я делал это довольно часто. Он работает, но игнорирует некоторые факторы доступности и передовой практики. Вы должны использовать метки, поля ввода, наборы полей, легенды и CSS для компоновки ваших форм. Почему? Потому что это то, для чего они нужны, это более эффективно, и я думаю, что доступность важна. Но это только мои личные предпочтения. Я думаю, что каждый должен сначала попробовать это, прежде чем осуждать это. Это быстро, легко и чисто.

@Marius:

Есть ли в макете табличные данные? Нет, несколько лет назад это было стандартно, но теперь уже нет :-)

One other use I would have for it would be forms, particularly label : textbox pairs. This could technically be done in div boxes, but it's much, much easier to do this in tables, and one can argue that label:textbox pairs are in fact tabular in nature.

Я обычно даю этикетке фиксированную ширину или отображаю ее в строке выше.

Я бы сделал различие между HTML для общедоступных веб-сайтов (таблицы нет-нет-нет, div-ы да-да-да) и HTML для полуобщественных или частных веб-приложений, где я предпочитаю таблицы даже для макета страницы.

Большинство уважаемых причин, по которым «Таблицы плохи», обычно являются проблемой только для общедоступных веб-сайтов, но не в большей степени для веб-приложений. Если я могу получить тот же макет и более согласованный вид в браузерах с помощью ТАБЛИЦЫ, чем сложный CSS + DIV, то я обычно соглашусь и утверждаю ТАБЛИЦУ.

Я вижу аргументы в пользу таблиц для форм, но есть альтернатива получше ... вам просто нужно засучить рукава и изучить CSS.

Например:

<fieldset>
  <legend>New Blog Post</legend>

  <label for = "title">Title:</label>
  <input type = "text" name = "title" />

  <label for = "body">Body:</label>
  <textarea name = "body" rows = "6" cols = "40">
  </textarea>
</fieldset>

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

Вот несколько отличных примеров CSS-форм:

http://jeffhowden.com/code/css/forms/

http://www.sitepoint.com/article/fancy-form-design-css/

http://www.smashingmagazine.com/2006/11/11/css-based-forms-modern-solutions/

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

lurker 18.03.2013 20:19

@Jon Limjap

Для метки: текстовое поле не подходят ни div, ни таблицы: <dl>

Таблицы используются для табличных данных. Если есть смысл поместить его в электронную таблицу, используйте таблицу. В противном случае вы можете использовать более подходящий тег, например div, span, ul и т. д.

Примечание: в то время, когда был задан вопрос, были практические причины для использования таблиц для некоторых целей макета. В этом больше нет необходимости из-за улучшений браузера, поэтому я обновил ответ.

HTML <table>-элементы следует использовать, когда данные логически имеют двумерную структуру. Если данные можно структурировать по строкам и столбцам, и вы можете осмысленно применять заголовки как к строкам, так и к столбцам, то, вероятно, у вас есть табличные данные.

Если у вас есть только одна строка или один столбец данных, это не табличные данные - это просто линейное содержимое. Вам нужны как минимум две строки и два столбца, прежде чем их можно будет считать табличными данными.

Некоторые примеры:

Использование таблиц для размещения боковых панелей и верхних и нижних колонтитулов страниц. Это не табличные данные, а макет страницы. Что-то вроде css grid или flexbox более уместно.

Использование таблиц для газетных столбцов. Это не табличные данные - вы все равно читаете их линейно. Что-то вроде столбцов css более уместно.

Это один из очень немногих замечаний, в которых действительно есть смысл, таблицы - это ЕДИНСТВЕННЫЙ инструмент для любого управления компоновкой (аналогично Java AWT / Swing или любым другим частям компоновки графического интерфейса на основе ограничений).

StaxMan 03.05.2009 06:24

IE поддерживает display: table в 8+. Сейчас его использовать вполне реально, особенно с учетом того, что вы можете дополнить условными таблицами стилей, если более ранний IE необходим. quirksmode.org/css/display.html

Andy 21.04.2011 01:54

Раньше я делал чистый CSS, но отказался от этого стремления в пользу гибридного подхода таблицы / CSS как наиболее прагматичного подхода. По иронии судьбы, это еще и из-за доступности. Вы когда-нибудь пробовали делать CSS на Sidekick? Какой кошмар! Вы когда-нибудь видели, как веб-сайты на основе CSS отображаются в новых браузерах? Элементы перекрывались или просто отображались некорректно, поэтому мне пришлось отключить CSS. Вы когда-нибудь пробовали изменять размер веб-сайтов на основе CSS? Они выглядят ужасно и часто вредно для слепых, если они используют функции масштабирования в браузере! Если вы сделаете это с таблицами, они будут масштабироваться намного лучше. Когда люди говорят о доступности, я обнаруживаю, что многие понятия не имеют, и меня это раздражает, потому что я инвалид, а они нет. Неужели они работали со слепыми? Глухие? Если доступность является главной проблемой, почему, черт возьми, 99% видео не имеют субтитров? Многие пуристы CSS используют AJAX, но не понимают, что AJAX часто делает контент недоступным.

С прагматической точки зрения можно использовать одну таблицу в качестве основного макета как можно ДЛИННО, поскольку вы предоставляете информацию в логическом потоке, если ячейки сложены друг на друга (что вы можете увидеть на мобильных устройствах). Теория CSS звучит великолепно, но частично работает в реальной жизни со слишком большим количеством хаков, что противоречит идеалам «чистоты».

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

Да, я обнаружил, что масштабирование текста не поддерживается многими сайтами, основанными на DIV. Таблицы справляются с этим лучше.

Nosredna 10.06.2009 18:23

Слепые пользуются функциями визуального масштабирования в браузере? (В каких браузерах есть невизуальное масштабирование?)

Roger Pate 30.11.2009 06:51

@ Роджер: Слепота не логическая; некоторые слепые люди видят, но плохо различают мелкие детали. Очевидно, что увеличение деталей полезно для них, поэтому они используют масштабирование (когда оно не сильно нарушено).

SamB 17.06.2011 01:00

По этому поводу я подумал, что сайт это был довольно забавным.

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

Robert Harvey 20.01.2010 23:19

Он не использует таблицы для данных, он использует

тег с css

Plippie 16.09.2011 15:52

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

Таблицы обычно тяжелые, а div - легкие.

Div - это просто divisions, они не предназначены для использования для группировки разделов страницы, связанных в семантическом смысле. Они не несут никакого неявного смысла, кроме этого.

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

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

Понятно, что DIV используются для макета, но мне довелось «заставить» использовать электронные таблицы для создания макета сетки в структуре div по следующим причинам:

the addition of percentage values did not allow a proper alignment with the div, while the same values expressed on cells of tables gave the expected result.

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

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