他の2つの回答ですでに述べたように、なぜあなたのアプローチが「バグ」であるべきなのかわかりません。しかし、あなたの一般的な概念には他にもいくつかの問題があります。
マークアップは次のようになっていると思います。
<ul>
<li class="list-item">...</li>
<li class="list-item">...</li>
<li class="list-item">...</li>
<li class="list-item">...</li>
</ul>
順序付きリストか順序なしリストかは関係ありません。
したがって、アプローチに関する最初のポイントは、クラス属性の使用です。リスト項目が 3 つまたは 4 つしかない場合は問題にならないかもしれませんが、要素が 100 個以上ある場合、これがどれほど効果的でないかを考えてみてください。
したがって、すべてのリスト項目でクラス属性を使用することは、通常、親要素で使用するよりも避けるべきです。
<ul class="my-list">
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
第 2 に、クラス名と ID 名は、表示が変更される可能性があるため、表示ではなく、常にそれぞれの要素の内容に関連している必要があります。
(したがって、「my-list」は適切な選択ではなく、コンテンツに関連する名前に置き換える必要があります。または、クラス属性の代わりに ID を使用する方がよい場合もあります。)
あなたも書いた:
...しかし、最初と最後の要素ではありません。
li
最初の要素と両方の要素のみを一致させるため、最初の要素でも2番目のアプローチでも、アプローチでこれをどのように達成するかわかりません。
最初の要素に一致しない別の解決策があります (必要なブラウザのサポートに応じて) :
.my-list li:not(:first-child) {
border-top: 1px solid black;
}
そして、最後の要素も除外したい場合:
.my-list li:not(:first-child):not(:last-child) {
border-top: 1px solid black;
}
ネストされたリストの場合は、次のように子セレクターを使用できます。
.my-list > li:not(:first-child):not(:last-child) {
border-top: 1px solid black;
}
いつものように、CSS で同じことを達成する方法はたくさんあります。どちらが最適かは、それぞれのプロジェクトの個々の状況によって異なります。一般に、KISS の原則を念頭に置いておくことは悪い考えではありません。;-)