奇妙な状況に遭遇したとき、私は CSS セレクターをいじっていました。
:first-child 疑似要素を使用する場合は、それが機能するように先頭にスペースを追加する必要があります。そうしないと機能しません。ただし、:first-letter 疑似要素の状況は逆で、先頭にスペースが追加されていない場合にのみ機能します。
これらは両方とも疑似要素であるため、かなり一貫性がありません。最初は IE10 だけの問題かと思いましたが、Chrome と Firefox で確認しましたが同じ結果でした。足りないものはありますか?この動作には理由がありますか?
問題を再現するコンパクトなサンプルを次に示します。
<!DOCTYPE html>
<html>
<head>
<style>
* { color: red; }
#article1 :first-child { color: deepskyblue; }
article :last-child { color: darkmagenta; }
#firstLetter:first-letter { color: darkslateblue; }
#firstLine:first-line { color: darkslateblue; }
</style>
</head>
<body>
<article id="article1">
<div>E :first-child </div>
<div>E :last-child </div>
</article>
<div id="firstLetter">:first-letter</div>
<div id="firstLine">:first-line</div>
</body>
</html>