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

Кажется, я где-то слышал / читал, что<div> внутри<td> был нет-нет. Не то чтобы это не сработало, просто что-то о том, что они не совсем совместимы в зависимости от типа дисплея. Не могу найти никаких доказательств, подтверждающих мою догадку, поэтому я могу быть совершенно неправ.

Ответы на вопрос(9)

<div> внутри<td>.

Я не смог определить div, используяdocument.getElementById() если я помещу это в тд. Но снаружи все работало нормально.

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

Если вы хотите использовать положение: абсолютное; на div сposition: relative; на тд вы столкнетесь с проблемами. FF, safari и chrome (mac, но не PC) не будут размещать div относительно td (как и следовало ожидать), это также верно для div сdisplay: table-whatever; так что если вы хотите сделать это, вам нужно два div, один для контейнераwidth: 100%; height: 100%; и нет границы, поэтому он заполняет тд без какого-либо визуального воздействия. а затем абсолютный.

кроме этого, почему бы просто не разделить камеру?

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

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

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

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

According to the HTML Specification

<div> может быть размещен гдеflow content ожидается1, какой<td> модель контента2.

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

Вот соответствующие правила 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">

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

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

put div inside tbody tag put div inside tr tag

Оба подхода действительны, если вы видите чувство:https://stackoverflow.com/a/23440419/2305243

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

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

ВАШ ОТВЕТ НА ВОПРОС