この場合、パフォーマンス上の理由から CSS のみが推奨される方法です。他の方法では実行できないため、実際に必要な場合を除き、javascript を使用しないでください。
解決策 1:first-child
疑似クラスを使用する
スタイル定義を追加します。
.MyCarTable td {
border-bottom: 1px solid #ccc;
}
.MyCarTable tr:first-child td {
border-top: 1px solid grey;
}
そして、心配しないでください。この特定の疑似クラスは、ブラウザーで長い間サポートされてきました。IE でもバージョン 7 以降でサポートされています。この動作を示すJSFiddleを次に示します。
th
解決策 2:要素を使用したテーブル ヘッダー
テーブルにヘッダー行がある場合は、th
その代わりに要素を使用td
し、ヘッダー セルに別のスタイルを設定します。ただし、これは、最初の行のセルのセマンティック コンテンツが、実際にはその下の行のセル ヘッダーの説明である場合にのみ使用してください。そうでなければ、私はそれを提案しません。
連続したテーブルの問題
同じコンテナ内に連続するテーブルがある場合、次のテーブルは前のテーブルの最後の行から上部の境界線を取得します。また、境界線が重複するため、最初の行に上部境界線を適用したくありません。
解決策 (この JSFiddleに見られるように) は似ており、最初のテーブルのみに適用されます。
.MyCarTable td {
border-bottom: 1px solid #ccc;
}
.MyCarTable:first-child tr:first-child td {
border-top: 1px solid #f99;
}
ご覧のとおり、一番上の行の境界線は、最初のテーブルとその中の最初の行にのみ設定されています。連続するすべてのテーブルがそれを設定するわけではありません。もちろん、この例は上記の最初のソリューションとのみ互換性があります。要素を含むパスを選択した場合はth
、両方の組み合わせを使用する必要があります (th
および疑似クラス)。
しかし、あなたが言ったように、リピーターコードを統合しました。