Как я могу указать, что td
тег должен охватывать все столбцы (когда точное количество столбцов в таблице будет переменным / трудно определить, когда отображается HTML)? w3schools упоминает, что вы можете использовать colspan="0"
, но в нем точно не указано, какие браузеры поддерживают это значение (IE 6 есть в нашем списке для поддержки).
Похоже, что установка colspan
значения, превышающего теоретическое количество столбцов, которое вы можете иметь, будет работать, но это не будет работать, если вы table-layout
установили fixed
. Есть ли недостатки в использовании автоматической раскладки с большим номером для colspan
? Есть ли более правильный способ сделать это?
Ответы:
У меня IE 7.0, Firefox 3.0 и Chrome 1.0
Атрибут colspan = "0" в TD не распространяется на все TD в любом из вышеперечисленных браузеров .
Может быть, не рекомендуется в качестве правильной практики разметки, но если вы дадите более высокое значение colspan, чем общее возможное нет. столбцов в других строках , тогда TD будет охватывать все столбцы.
Это НЕ работает, когда свойство CSS макета таблицы установлено на фиксированное значение.
Еще раз, это не идеальное решение, но, похоже, работает в вышеупомянутых 3 версиях браузера, когда свойство CSS макета таблицы является автоматическим . Надеюсь это поможет.
источник
colspan="42"
чтобы охватить весь ассортимент. Очевидно, что это проблема для> 42 столбцов, но это одно из немногих волшебных чисел, которые я одобряю.Просто используйте это:
Работает на Firefox 3.6, IE 7 и Opera 11! (и я думаю, на других, я не мог попробовать)
Предупреждение: как уже упоминалось в комментариях ниже, это на самом деле то же самое, что и
colspan="100"
. Следовательно, это решение сломается для таблиц с CSStable-layout: fixed
или более 100 столбцов.источник
colspan="100%"
значит точноcolspan="100"
.Если вы хотите создать ячейку 'title', охватывающую все столбцы, в качестве заголовка для вашей таблицы, вы можете использовать тег заголовка ( http://www.w3schools.com/tags/tag_caption.asp / https: // developer.mozilla.org/en-US/docs/Web/HTML/Element/caption) Этот элемент предназначен для этой цели. Он ведет себя как div, но не охватывает всю ширину родительского элемента таблицы (как div сделал бы в той же позиции (не пытайтесь сделать это дома!)), Вместо этого он охватывает ширину Таблица. Есть некоторые межбраузерные проблемы с границами и тому подобное (было приемлемо для меня). В любом случае, вы можете заставить его выглядеть как ячейка, которая охватывает все столбцы. Внутри вы можете создавать строки, добавляя элементы div. Я не уверен, что вы можете вставить его между tr-элементами, но я думаю, это было бы хаком (поэтому не рекомендуется). Другим вариантом будет возиться с плавающими div, но это гадость!
Делать
не
источник
В качестве частичного ответа, вот несколько моментов, о
colspan="0"
которых упоминалось в вопросе.TL; DR версия:
colspan="0"
не работает ни в одном браузере. W3Schools не так (как обычно). В HTML 4 сказано, чтоcolspan="0"
столбец должен занимать всю таблицу, но никто этого не реализовал, и он был удален из спецификации после HTML 4.Еще несколько подробностей и доказательств:
Все основные браузеры рассматривают его как эквивалент
colspan="1"
.Вот демонстрация, показывающая это; попробуйте это в любом браузере, который вам нравится.
HTML 4 спецификации (теперь старые и устаревшие, однако в настоящее время назад , когда этот вопрос был задан вопрос) было действительно сказать , , что
colspan="0"
следует рассматривать как охватывающий все столбцы:Однако большинство браузеров никогда не реализовывали это.
HTML 5.0 (рекомендованный кандидатом еще в 2012 году), жизненный стандарт WhatWG HTML (доминирующий сегодня стандарт) и новейшая спецификация W3 HTML 5 не содержат формулировку, приведенную выше в HTML 4, и единодушно согласны с тем, что
colspan
of 0 не допускается, с этой формулировкой, которая появляется во всех трех спецификациях:Источники:
Следующие утверждения со страницы W3Schools, ссылки на которые есть в вопросе , - по крайней мере, в настоящее время - полностью ложны:
а также
Если вы еще не знаете, что веб-разработчики, как правило, неуважительно относятся к W3Schools, за их частые неточности, подумайте, почему.
источник
Для IE 6 вы хотите, чтобы colspan равнялся количеству столбцов в вашей таблице. Если у вас есть 5 столбцов, то вам нужно:
colspan="5"
.Причина в том, что IE обрабатывает colspans по- разному, он использует спецификацию HTML 3.2:
Ошибка хорошо документирована .
источник
colspan
s должно быть положительным целым числом, что делаетcolspan=0
недопустимым; нигде это явно не предписывает, чтоcolspan=0
должно обрабатываться какcolspan=1
(хотя я уверен, что это именно то, что делает IE 6). Кроме того, цитата (больше не?) Нигде на странице форума, на которую вы ссылаетесь, и большинство результатов поиска Google (сейчас?) Относятся к совершенно другим ошибкам, связанным с colspan в IE 6.Если вы используете jQuery (или не возражаете против добавления), это сделает работу лучше, чем любой из этих хаков.
Чтобы упростить реализацию, я украшаю любой td / th, который мне нужен, с помощью класса, такого как «maxCol», тогда я могу сделать следующее:
Если вы найдете реализацию, для которой это не сработает, не хлопайте ответом, объясните в комментариях, и я обновлю информацию, если это будет возможно.
источник
Другое рабочее, но уродливое решение:
colspan="100"
где 100 - это значение, превышающее общее количество столбцов, которое вам нужноcolspan
.Согласно W3C,
colspan="0"
опция действительна только сCOLGROUP
тегом.источник
<td>
S иметьcolspan="0"
(см w3.org/TR/REC-html40/struct/tables.html#adef-colspan ), в то время как HTML 5.0 не позволяетspan="0"
наcolgroup
(см w3.org/TR/html50/tabular- data.html # attr-colgroup-span, в котором говорится, что «значение атрибута содержимого span ['s] должно быть действительным неотрицательным целым числом, большим нуля." ).Ниже приведено краткое решение es6 (аналогично ответу Rainbabba, но без jQuery).
источник
Просто хочу добавить свой опыт и ответить на это.
Примечание. Это работает только в том случае, если у вас есть предопределенные символы
table
atr
сth
s, но они загружаются в ваши строки (например, через AJAX) динамически.В этом случае вы можете посчитать количество элементов
th
в первой строке заголовка и использовать его для охвата всего столбца.Это может понадобиться, если вы хотите передать сообщение, если результаты не были найдены.
Примерно так в jQuery, где
table
находится ваша входная таблица:источник
th
s не обязательно число столбцов, так как некоторые из них могут иметьcolspan
набор, и поэтому это не будет работать так, как написано для всех.Может быть, я просто мыслитель, но я немного озадачен, разве вы не знаете номер столбца вашей таблицы?
Кстати, IE6 не соблюдает colspan = "0", с определенной или без определенной группы. Я также попытался использовать thead и th для генерации групп столбцов, но браузер не распознает форму colspan = "0".
Я пробовал с Firefox 3.0 на Windows и Linux, и он работает только со строгим doctype.
Вы можете проверить тест на нескольких луков на
http://browsershots.org/http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Я нашел тестовую страницу здесь http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Изменить: Пожалуйста, скопируйте и вставьте ссылку, форматирование не будет принимать двойные части протокола в ссылке (или я не настолько умен, чтобы правильно отформатировать ее).
источник
Согласно спецификации
colspan="0"
должна приводиться таблица шириной тд.Однако это верно только в том случае, если ваша таблица имеет ширину! Таблица может содержать строки различной ширины. Таким образом, единственный случай, когда средство визуализации знает ширину таблицы, если вы определите группу colgroup ! В противном случае результат colspan = "0" является неопределимым ...
http://www.w3.org/TR/REC-html40/struct/tables.html#adef-colspan
Я не могу проверить это на старых браузерах, но это часть спецификации, начиная с 4.0 ...
источник
colspan
0 было запрещено. И w3.org/TR/html50/… (спецификация HTML 5.0), и html.spec.whatwg.org/multipage/… (последний стандарт жизни WhatWG HTML)colspan
должны быть больше нуля. И как отмечалось в других ответах здесь, браузеры фактически никогда не реализовывали старое поведение HTML 4, которое вы цитируете.попробуйте использовать «colSpan» вместо «colspan». IE любит версию camelBack ...
источник