私はtd
タグといくつかのdiv
内部を持っていますtd
:
<td>
<div class='test'></div>
<div class='test'></div>
</td>
<td>
<div class='test'></div>
</td>
に複数ある場合は追加margin-bottom
したい。cssでこれを行うにはどうすればよいですか?div
td
CSS の要素の総数を直接「カウント」することはできないため、2 つ以上の div がある場合にのみクラスを適用する方法はありません (そのためには JavaScript が必要です)。
ただし、考えられる回避策は、クラスを td 内のすべての div に適用することです...
td > div {
margin-bottom: 10px;
}
...そして、要素が1つしかない場合は、別のスタイルでオーバーライド/無効にします。これにより、間接的に、子要素が 2 つ以上ある場合にスタイルを追加できます。
td > div:only-child {
margin-bottom: 0px;
}
または、最初の div の後のすべての div に適用することもできます。
td > div:not(:first-child) {
margin-bottom: 10px;
}
編集:または、Itayがコメントで述べているように、兄弟セレクターを使用してください
td > div + div {
margin-bottom: 10px;
}
CSS-Has のブラウザーサポートは限られています。
しかし、ここに行きます:
td:not(:has(div:first-child:last-child))
ボーナス:
td:not(:has(div:only-child))