ページには、多くの列を持つ多くのHTMLテーブルがあります。それらに異なるスタイルを適用する必要があります。すべての列の幅は異なりますが、テーブルでは同じになります。つまり、すべてのテーブルの最初の列が同じになり、2番目の列とすべての列が同じになります。
CSSはテーブルには適用されますが、列には適用されません。cssクラスを追加するだけで、HTMLコードに適用する必要がなく、自動的に適用される方法はありますか。疑似列または他の方法を使用している可能性がありますか?
ページには、多くの列を持つ多くのHTMLテーブルがあります。それらに異なるスタイルを適用する必要があります。すべての列の幅は異なりますが、テーブルでは同じになります。つまり、すべてのテーブルの最初の列が同じになり、2番目の列とすべての列が同じになります。
CSSはテーブルには適用されますが、列には適用されません。cssクラスを追加するだけで、HTMLコードに適用する必要がなく、自動的に適用される方法はありますか。疑似列または他の方法を使用している可能性がありますか?
CSS をサポートするブラウザーを使用できる場合はnth-child()
、以下を使用できます。
tr td:nth-child(even) {
background-color: #ffa;
}
上記のデモでは:nth-child(even)
、最初の要素 (行見出しを含む) のスタイル設定を避けるために使用しましtd
たが、もちろん、行見出しをth
要素に含めることもできます (おそらく意味的に正しいでしょう)。odd
列 (またはodd
td
要素)をスタイルするが、 をスタイルしない場合は:first-child
、:not()
セレクターを使用できます。
tr td:nth-child(odd):not(:first-child) {
background-color: #ffa;
}
:nth-child()
疑似クラスをサポートしていない古いブラウザーをサポートする必要があるという制限がある場合は、隣接する兄弟セレクターを使用できます (ただし、これは保守性が低くなります)。
td + td, /* styles the second td */
td + td + td + td { /* styles the fourth td */
background-color: #ffa;
}
td + td + td { /* styles the third td */
background-color: #fff;
}
クラスを使用してスタイルを設定する方が簡単ですがodd
( (または)にのみ提供されている場合でもeven
:
.even { /* styles the cells with the class of 'even' */
background-color: #ffa;
}
.even + td { /* styles the cell that follows the cell with the 'even' class */
background-color: #f90;
}
colgroup
およびcol
要素を使用して、列のクラスを定義することもできます。
<table>
<colgroup>
<col class="first" />
<col class="second" />
<col class="third" />
<col class="fourth" />
</colgroup>
<thead>
<tr>
<th></th>
<th>Column one</th>
<th>Column two</th>
<th>Column three</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row one</td>
<td>row one, cell one</td>
<td>row one, cell two</td>
<td>row one, cell three</td>
</tr>
<tr>
<td>Row two</td>
<td>row two, cell one</td>
<td>row two, cell two</td>
<td>row two, cell three</td>
</tr>
</tbody>
</table>
例として次の CSS を使用します (他のクラスのスタイルを設定しない理由はないことに注意してくださいcol
。このデモではスタイルを設定しないことを選択しただけです)。
.second, .fourth {
background-color: #ffa;
}
参考文献:
CSS3 の「n 番目」のセレクターを使用できますが、古いブラウザーでは機能しません。したがって、最善の解決策は、ページが読み込まれた後に javascript (jQuery の例) で変更を適用することです。
$(function() {
$("table tr td:nth-child(n)").css('width', '100px');
});
または、クラスを追加できます
$("table tr td:nth-child(n)").addClass("myWidth1");
そしてあなたのCSSで
.myWidth1{ width: 100px }
テーブルセレクターがすべてのテーブルをキャッチしていることを確認してください。