Действительно ли DIV внутри является TD плохая идея?

Это возможно, но не все что легкий, для создания гибридной собственной/управляемой сборки в C#. Если бы Вы были использующий C++ вместо этого, то это было бы намного легче, поскольку компилятор Visual C++ может создать гибридные блоки так же легко как что-либо еще.

, Если у Вас нет строгого требования для создания гибридного блока, я согласился бы с MusiGenesis, что это не действительно стоит проблемы, чтобы сделать с C#. Если необходимо сделать это, возможно, посмотрите на перемещение в C++ / CLI вместо этого.

139
задан jcollum 25 January 2016 в 23:58
поделиться

5 ответов

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

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

Правила того, как div должен be Size хорошо определен в стандартах, но правила того, как td должны иметь размер, не так хорошо определены, поэтому разные браузеры используют несколько разные алгоритмы.

140
ответ дан 23 November 2019 в 23:20
поделиться

После проверки XHTML DTD I обнаружил, что элементу разрешено содержать элементы блока, такие как заголовки, списки, а также элементы

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

Вот соответствующие правила DTD:

<!ELEMENT td %Flow;>
<!-- %Flow; mixes block and inline and is used for list items etc. -->
<!ENTITY %Flow "(#PCDATA | %block; | form | %inline; | %misc;>
<!ENTITY %block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
70
ответ дан 23 November 2019 в 23:20
поделиться

Нет. Не обязательно.

Если вам нужно разместить DIV в TD, убедитесь, что вы правильно используете TD. Если вас не интересуют табличные данные и семантика, то вам, в конечном итоге, наплевать на DIV в TD. Я не думаю, что это проблема - если у вас есть , все в порядке.

Согласно спецификации HTML

A

может размещается там, где ожидается расходное содержимое 1 , что является моделью содержимого 2 .

37
ответ дан 23 November 2019 в 23:20
поделиться

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

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

14
ответ дан 23 November 2019 в 23:20
поделиться

Он нарушает семантику , вот и все. Он работает нормально, но в будущем могут появиться программы чтения с экрана или что-то еще, что не понравится обрабатывать ваш HTML, если вы "нарушите семантику".

-4
ответ дан 23 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

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