それはなぜなのか、CSS で回避策があるのだろうかと思っています。私にはCSSのバグのようです-最初の要素が最後の要素になることもあります。
バグではありません。これがカスケードのしくみです。要素が最初の子と最後の子の両方である場合:first-child
、別:last-child
のルールに と があり、両方が同じ要素に一致する場合、後で宣言されたルールまたはより具体的なルールのすべてが他方をオーバーライドします。
この動作の例をここで見つけることができます。省略形プロパティと、border-radius
省略形の代わりにコンポーネント プロパティを使用すること、および次のセレクタのいずれかを使用して完全に別のルールを指定することを含む回避策があります...
「最初の子も最後の子」セレクターのようなものを探しています。それは存在しますか?
文字通り、次のように両方の疑似クラスを連鎖させます。これは正常に機能します。
:first-child:last-child
ただし、同じように動作する特別な疑似クラスが存在します。
:only-child
これら 2 つのセレクターの主な違い (実際には唯一の違い) は特異性です。最初のセレクターには、追加の擬似クラスが 1 つ含まれているため、より具体的です。:last-child
と:only-child
はどちらも各ブラウザのまったく同じバージョンでサポートされているため、ブラウザのサポートにも違いはありません。