Задать вопрос

Что плохого в вёрстке таблицами?

Извиняюсь за, вероятно, нубский вопрос. Раньше я занимался разработкой веб-приложений, и мы всё верстали в таблицах. Не так давно я заинтересовался вёрсткой обычных сайтов и удивился, услышав мнение, что вёрстка в таблицах — это что-то плохое.

Стал разбираться, что же тогда хорошо. Увидел чудесные атрибуты типа display:table, display:table-row и так далее, которые вешаются на не-табличные элементы, копируя при этом поведение таблиц. Что характерно, возможностей у них поменьше, чем у нормальных таблиц (никаких colspan, rowspan и так далее). И возникает неизбежный вопрос… Ну, вы поняли.
  • Вопрос задан
  • 16348 просмотров
Подписаться 23 Оценить Комментировать
Решения вопроса 1
@egorinsk
Начнем с того, что все, что делается таблицами, делается и CSS (просто надо не лениться и прочитать соответствующие руководства). У таблиц есть недостатки:

— нельзя перегруппировать блоки для узких страниц или в версии для печати только с помощью CSS
— если мы выводим список картинок таблицей, каждая картинка в ячейке, то при добавлении или удалении картинки оставшиеся не сдвигаются, а остается пустое место
— у ячеек width работает как min-width, при этом алгоритмы ратяжения ячеек не документированы и ведут себя непредсказуемо, из-за этого они могут непредсказуемо растягиваться, и хуже того, при динамической замене контента они не всегда сжимаются обратно и остаются дыры. Одно длинное слово или картинка может растянуть всю страницу.
— фиксированное, абсолютное и относительное позиционирование неюзабельно в таблицах
— ячейки не получится перетаскивать drag-n-drop
— трудно манипулировать DOM (надо хитро вставлять и убирать дополнительные элменеты)
— верстка получается замусоренная кучей лишних тегов, которые тяжело читать и в которых тяжело разобраться. Это не HTML, а лапша. Особенно тяжело, когда таблицы вложены друг в друга и раскиданы по куче шаблонов.
— нельзя поместить контент в коде первым, а меню в шапке — вторым (некоторые сеошники считают, что это улучшает индексацию)
— верстка таблицами всегда была костылем (и это несемантично), с поддержкой CSS2 (появилась более 10 лет назад) таблицы стали не нужны. 10 лет назад они уже стали ненужными.

Давайте, расскажите хоть одну причину использовать устаревшую много лет назад технологию. Поддержка IE4? Верстальщик-пенсионер?
Ответ написан
Пригласить эксперта
Ответы на вопрос 8
SLY_G
@SLY_G
журналист, переводчик, программист, стартапщик
Разве что сделать адаптивную вёрстку очень сложно таблицами.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Сами таблицы не плохо. Тут как уже говорилось выше вопрос семантики.
Но по сути просто плохо, когда то, как страница должна отображаться, влияет на разметку. Да, оно всегда влияет, но по мелочи. А тут у вас заведомо ограничения по разметке. Плохо влияет на расширяемость и поддержку кода.
Ответ написан
tmikwid
@tmikwid
Вопрос в семантичности разметки
Ответ написан
ertaquo
@ertaquo
Табличная верстка менее гибкая, чем верстка дивами. Например, я плохо представляю себе, как сделать многоуровневое меню с анимацией появления при верстке дивами.
Ответ написан
EugeneOZ
@EugeneOZ
stackoverflow.com/questions/83073/why-not-use-tables-for-layout-in-html
думаю, не стоит копипастить сюда ответ, так что просто ссылка :)
Ответ написан
Комментировать
spmbt
@spmbt
Семантичность — это не главное. По сравнению с тем, что таблицы в предельных значениях (пустые ячейки, нулевые размеры ячеек) очень капризно и браузерозависимо себя ведут.
Ответ написан
@Otkrick
Насколько я помню, ее ругали только из-за того, что для рендеринга браузер ждет закрывающего тэга. То есть таблица будет отображаться только когда полностью загрузится. Блоки отображаются по мере загрузки.
Ответ написан
@Erick_Flatcher
Я может щас какую то глупость скажу, но… ul/li тоже были придуманы для простых текстовых списков, а не для создания менюшек с CSS. :) Что вы про это думаете?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы