回答:
div
instide a を使用することtd
は、レイアウトにテーブルを使用する他の方法よりも悪くはありません。(ただし、レイアウトにテーブルを使用しない人もいますが、私もその1つです。)
ただしdiv
、a td
をa で使用すると、要素のサイズがどのようになるかを予測するのが難しい場合があります。divのデフォルトでは、親から幅を決定し、テーブルセルのデフォルトでは、コンテンツのサイズに応じてサイズを決定します。
aのdiv
サイズ変更のルールは標準で十分に定義されていますが、aのtd
サイズ変更のルールは十分に定義されていないため、ブラウザごとに若干異なるアルゴリズムを使用しています。
table-layout:fixed
CSSは、あなたが思っているものではありません。最初の行のサイズのみを計算することにより、テーブルをレンダリングするときにブラウザーが行う計算の量を減らします。
XHTML DTDを確認したところ、<TD>要素に見出し、リスト、および<DIV>要素などのブロック要素を含めることが許可されていることがわかりました。したがって、<TD>要素内で<DIV>要素を使用しても、XHTML標準に違反しません。他の最新のHTMLバリエーションにも<TD>要素と同等のコンテンツモデルがあると確信しています。
関連する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">
いいえ、必ずしもそうとは限りません。
TD内にDIVを配置する必要がある場合は、TDを適切に使用していることを確認してください。表形式データとセマンティクスを気にしない場合、最終的にはTDのDIVを気にしません。でも問題はないと思います-もしあなたがそれをしなければならないなら、あなたは大丈夫です。
HTML仕様によると
テーブルセルにはブロックレベルの要素を合法的に含めることができるため、本質的に偽物ではありません。もちろん、ブラウザーの含意は、これを推測的な理論上の立場のままにします。レイアウトの問題やバグを引き起こす可能性があります。
テーブルがレイアウトに使用されたように-そして時にはそれでも-ほとんどのブラウザーがコンテンツを適切にレンダリングすると思います。IEでも。
位置を使用する場合:絶対; divとposition: relative;
tdで問題が発生します。FF、サファリ、および(あなたが期待するように)、クロム(マックではなく、PCけれども)が、これはとのdivについても同様であるTDにDIVを位置決めしませんdisplay: table-whatever;
、あなたは2 div要素が必要であることをやりたいので、もしに1つコンテナwidth: 100%;
height: 100%;
で境界線がないため、視覚的な影響なしにtdを塗りつぶします。そして絶対的なもの。
それ以外はなぜセルを分割しないのですか?
それを扱う2つの方法
div
中に入れるtbody
div
中に入れるtr
あなたがfeferenceを見ればどちらのアプローチは、有効です。https://stackoverflow.com/a/23440419/2305243
それは意味論を壊します、それだけです。正常に動作しますが、「セマンティクスを壊す」と、スクリーンリーダーなど、HTMLの処理を楽しむことができなくなる可能性があります。