20

W3は、表の列 (要素を含む) に 4 つの CSS ルール (<col>境界線、背景、幅、可視性) のみが許可されることを指定します。

この決定の背後にある理由を知っている人はいますか? 境界線と背景を使用できるのであれば、フォントと色を使用しないのはなぜですか?

4

4 に答える 4

13

Ian Hixieは、ここで詳細に説明しています。テーブルの列に4つのプロパティしか適用されない理由の謎。関連する引用:

テキストの色は、その要素の「color」プロパティに依存します。特に指定がない限り、「color」プロパティは(基本的に)デフォルトで「inherit」になります。これは「親要素の値を取得する」ことを意味します。

したがって、セル内の一部のテキストの場合、色はセルの「color」プロパティによって決定されます。これは、行から取得され、テーブルから取得され、テーブルの親から取得されます。

コラムはどうですか?ええと、その列はセルの祖先の1つではないので、決して調べられません!そしてそこに問題があります。

于 2009-07-13T13:24:52.180 に答える
8

私の限られた理解に基づいて、闇の中に突っ込んだだけです。

<col>と はセルの列を<colgroup>表しますが、実際にはセルを含まない (実際には s に含まれている)ため、列関連の要素によるスタイリングは制限されていると思います<tr>。これに伴い、優先順位と特異性、およびカスケードの問題が発生します (カスケードは含まれる/コンテナー要素間でのみ実行できるため) - <tr>andからの競合するスタイル ルール<col>(多重継承階層では同じレベルになります) が発生した場合 - どちらがセル実際に使う?

ただし、その特定の一握りのスタイル属性が許可されている理由については、わかりません。

于 2009-07-13T12:25:57.457 に答える
4

一言:あいまいさ。セルは行の子でなければなりません。それ以外の場合はテーブルではありません。しかし、そこから派生する列はありません。を使用colspanすると、1 つのセルが 2 つの列に含まれる可能性があります。紛らわしい方法を考え出すよりも、開発者がclassn 番目のセルごとに a を配置できるようにしてみませんか?

リンク先の仕様をよく見ると、あいまいさを解決しようとしていることがわかります。widthプロパティは最小値を指定します。background行とセルに後部座席を取ります。border「競合解決アルゴリズム」を参照します。アルゴリズムさえ存在する唯一の理由は、border誰が「勝つ」べきかが合理的に理解されているからです (詳細については、アルゴリズムを参照してください)。しかし、どちらが「勝つ」べきcolorかを理解しようとすることを想像できますか?font

于 2009-07-13T12:39:40.020 に答える
0

おそらく、テーブルの各行が必ずしも列のセルを表示する必要がないためです (例: colspan のため)。そのセルはどの列からスタイルを継承する必要がありますか? 推測です。

于 2009-07-13T12:22:56.613 に答える