質問: CSS疑似要素(例えば::before)を作成すると、Chromeコンソール画面では常に::beforeと表示されます。 また、画面に疑似要素指定内容は表示されますが、テキスト選択も出来ません。 この時、DOM はどうなっているのでしょうか? 疑似要素作成=仮想DOM 作成なのでしょうか? あるいは、そもそも疑似要素はDOM ではない? 疑似要素ってレンダリングする際、どういう扱いになっているのでしょうか?
回答: WebKit/Blinkの内部的には擬似要素は特殊なElementとして実装されています。しかしながら、通常のDOMツリーとは別の方法でくっついているので、開発者は実装方法を気にする必要はないと思います。 テキスト選択できないのは、Rangeオブジェクトで表現できないからです。