の描画ルールについて テーブルのセル幅の計算方法は大きく分けて、固定テーブルレイアウト、自動テーブルレイアウト、CSSをよく書く人なら知っているはず, しかし、テーブルの幅を設定しても機能しないことがよくあります。それとも固定幅なしでレンダリングするのが普通なのでしょうか。これら 2 つのメソッドがレンダリングをどのように計算するかを紹介します。
最初にいくつかの一般的な 変数を設定します:
tableWidth=テーブル幅=100%
tableBorderWidth=テーブルの左右の境界線の幅
tdBorderWidth =すべての列を左and right 境界線の幅の合計 (マージされた境界線は 1px としてカウントされます)
tdPadding = すべての列の左右のパディングの合計
tdWidth = 幅が定義されているすべての列の幅の合計
t dLength = 列数
ps: 固定テーブル レイアウトでは、テーブルの列の幅は列の内容とは何の関係もありません。テーブルの幅、列の幅、テーブルの左右の境界線、列の左右の境界線、列の左右のパディングは関連しています
固定テーブル レイアウトを使用することで、ユーザー エージェントは最初のレイアウトを受け取った後にテーブルを表示できます。行、つまり最初の行の幅のみが機能します
幅が自動の列幅 (つまり、幅が定義されていない列の幅、計算結果が負の場合は 0) = (tableWidth-tableBorderWidth- tdBorderWidth-tdPadding-tdWidth)/tdLength
各列の幅 テーブルの幅で均等に分散
th1 | th2 | th3 | th4 | th5 | 6番目 | th7 | th9 | th10 | row1row1row1row1row1row1row1row1low2row2row2row2row2row2row2row21row3 |
---|---|---|---|---|---|---|---|---|---|
ROW10ROW10ROW10ROW10ROW10ROW10ROW10 | 2. すべての幅が定義されており、すべての列の幅の合計はテーブルの幅より小さくなります (tableBorderWidth+tdBorderWidth +tdPadding+tdWidth | 各列の幅は、テーブル全体に均等に分散されます。合計幅; テーブルの幅は定義された幅です | th1 | th2 | th3 | th4 |
TH9 | TH10 | Row1Row1Row1Row1Row1Row1ROW1Row1 | Row2Row 2Row2Row2Row2Row2Row2 | Row3 | Row4Row4Row4Row4Row4 | R OW5Row5row5row5row5row5row5row5row5Row5Row6 | Row7row7row7row7row7row7row7row7Row8row8row8row8row8row8Row8Row9Row9Row9Row9 row9row9row9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
th2 | th3 | th4 | th5 | th6 | th7 | th8 | th9th10 | ||
---|---|---|---|---|---|---|---|---|---|
row3 | row 4row4row4row4row4row4row4row4 | row5row5row5row5row5row5row5row5 | row6 | row7row7row7row7row7row7row7row7 | row8row8row8row8row8row8row8 | row9ro w9row9row9row9row9row9row9 | 行10行10行10行10行10行10行10 |
th3 | th4 | th5 | th6 | th7 | th8 | th9 | th10 | ||
---|---|---|---|---|---|---|---|---|---|
row3 | row4row4row4row4row4row4row4row4 | row5row5row5row5row5row5row5row5 | row6 | row7row7row7row7row7row7row7row7 | row8row8row8row8row8row8row8row8 | row9row9row9row9row9row9row9row 9 | row10row10row10 row10row10row10row10 |
幅が定義されていない他の
列の幅は 0 になりますth3 | th4 | th5 | th6 | th7 | th8 | th9 | th10 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
row3 | row4row4row4row4row4row4row4row4 | row5row5row5row5row5row5row5row5 | row6 | row7row7row7row7row7row7row7row7 | row8row8row8row8row8row8row8row8 | row9row9row9 row9row9row9row9row9 | 行10行10行10行10行10行10行10 |
2. 自動テーブル レイアウト、テーブル設定 table-layout:auto (属性のデフォルト値は auto)各列の幅は、行区切りなしでセル内の最も広い内容によって設定される場合があります。最終的なレイアウトを決定する前に、テーブル内のすべての列にアクセスする必要があるため、非常に遅くなります 1. すべての最小幅は未定です各列の幅は、内部のコンテンツによって完全に決定されます。
2. すべての列には最小幅が定義されており、内容に基づいて計算されたすべての列の合計は次の値より小さくなります。テーブルの幅各列 幅は最初にコンテンツに基づいて計算され、定義された最小幅より小さくすることはできません。超過幅は各列に均等に配分されます。
3 すべてに最小幅が定義されており、コンテンツに基づいて計算されたすべての列の合計は、テーブルの幅各列 幅は最初にコンテンツに基づいて計算され、次に定義された最小幅
|
以上がHTML における表のセル幅の計算ルールの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。