CSSを使用してテーブルの最初のtr
を除くすべてのtr
要素を選択するにはどうすればよいですか?
私はこの方法を試してみましたが、うまくいかないことがわかりました:
最初のtr
または後続のtr
sにクラスを追加します。 CSSだけで目的の行を選択するクロスブラウザの方法はありません。
ただし、Internet Explorer 6、7、または8を気にしない場合:
tr:not(:first-child) {
color: red;
}
IE7以降でサポートされている兄弟コンビネータの使用について誰も言及していないことに驚いています。
tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */
これらは両方とも(とにかくHTMLテーブルのコンテキストで)まったく同じように機能します。
tr:not(:first-child)
理想的なソリューションですが、IEではサポートされていません
tr:not(:first-child) {css}
2番目の解決策は、すべてのtrをスタイルし、最初の子のcssでオーバーライドすることです。
tr {css}
tr:first-child {override css above}
あなたが話している「最初の行」はあなたのテーブルヘッダーのように聞こえます-したがって、実際にはマークアップでthead
とtbody
を使用することを考える必要があります( ここをクリック ) (意味的に正しい、スクリーンリーダーのようなものに便利)、CSS選択(table thead ... { ... }
)のためのより簡単でクロスブラウザに優しい可能性
質問にはすでに適切な答えがありますが、:first-child
タグが子を表す項目タイプに適用されることを強調したいと思います。
たとえば、コードでは:
<div id"someDiv">
<input id="someInput1" />
<input id="someInput2" />
<input id="someInput2" />
</div
最初のマージンではなく、マージンを持つ次の2つのエレメントのみに影響を与えたい場合は、次のようにします。
#someDiv > input {
margin-top: 20px;
}
#someDiv > input:first-child{
margin-top: 0px;
}
つまり、input
sは子であるため、セレクターの入力部分にfirst-child
を配置します。
別のオプション:
tr:nth-child(n + 2) {
/* properties */
}
申し訳ありませんが、これは古いことですが、最初以外のすべてのtr要素をスタイルし、すべてのtr要素に対して指定したものを取り消すpsuedoクラス:first-childを使用してください。
この例で説明する方が良い:
tr {
border-top: 1px solid;
}
tr:first-child {
border-top: none;
}
/パトリック
tr:not(:first-child)
はIE 6、7、8ではサポートされていないため、jQueryのヘルプを使用できます。あなたはそれを見つけるかもしれません ここ