0

CSS4仕様の最初のドラフトに基づいて、親セレクターが最終的にCSSで使用可能になります。私の質問は、なぜW3Cが以前のCSS仕様にこれを含めなかったのかということです。なぜそれはCSSの他のセレクターと一緒に公開されなかったのですか?

4

2 に答える 2

4

まず、Selectors 4 から参照しているのは、単なる「親セレクター」ではありません。サブジェクトセレクターです。これは、子コンビネーターと同様に、あるセレクターから別のセレクターを指し、「これは親です」と言うコンビネーターだけが関与するわけではないことを意味し>ます。これには、「この特定の要素がスタイルを受け取る要素である」という構文、つまりセレクターのサブジェクトが必要です。これが、コンビネーターではなく、プレフィックスやサフィックスなどの使用が見られる理由です。たまたま要素の親を選択するために使用できます。しかし、その機能だけを念頭に置いて設計されたわけではありません。そのため、単に「親セレクター」と呼ぶのは不適切です。

また、サブジェクト セレクターの構文を正しく理解するのは非常に困難です。彼らは 10 年以上もこれに取り組んできました。パブリック メーリング リストのアーカイブで「件名セレクター」を検索すると、CSS 2.0 が W3C 勧告になったばかりの 1999 年 (!) にさかのぼるものが見つかります。現在の Selectors 4 ドラフトでも、最終的な構文はまだ決定されていません。2011 年の FPWD では$記号を使用していましたが、2012 WD では!.

一般的な親セレクターに関しては、これは歴史的に1私が見たものからのパフォーマンスの再描画に関する問題でした。ブラウザは、ページがダウンロードされると DOM を順番に構築し、CSS はページが読み込まれるとすぐにリアルタイムで適用されます。親セレクターを使用すると、ブラウザーは、ルールを適用するかどうかを決定する前に、子が判明するまで待機する必要があります。これにより、特にページの読み込みが遅い場合に再描画の問題が発生し、ユーザー エクスペリエンスがさらに損なわれる可能性があります。

これは、特に HTML のような宣言型マークアップ言語では、ドキュメントの自然なソース順序に従うため、子孫セレクター、子セレクター、または兄弟セレクターに続く問題ではありません。

これは、親セレクターがカットを行うことを妨げているいくつかの懸念の中で最大のものの 1 つだと思います。実際、最初の CSS1 には子セレクターや兄弟セレクターさえありませんでした。子孫セレクターしかありませんでしたが、それ自体はそれ自体とは呼ばれていませんでした。これは単純にcontextual selectionとして知られていました。これは、CSS が表示マークアップという開発地獄から生まれたばかりの頃には非常に原始的な概念でした。


1 Selectors 4 では、複雑なセレクターで表される任意の個々の要素にルールを適用する方法が導入されましたが、セレクターは全体として依存する必要があるため、これらのパフォーマンスの問題が対処されているのか、それとも無関係にされているのか疑問に思うでしょう。ブラウザが一致を判断するために完全な構造に基づいています。これは、ページの読み込みが依然として主要な要因であることを意味します。残念ながら、それは私には立ち入り禁止です。私は CSS を実装していないので、実装の問題について話すことはできません。

于 2012-12-30T03:50:32.910 に答える
2

CSS は、要素のソースがダウンロードされるとすぐに、要素に適用可能なスタイルがわかるように、前方のみの方法で適用されるように設計されています。

親セレクターは、すべての要素の子がサーバーからダウンロードされるまで、要素に適用されるかどうかをレンダラーが認識できないため、その設計を壊します。

于 2012-12-30T03:52:14.407 に答える