0

私は現在、サーバーサイド JS 用の CSS セレクター エンジンを作成しています (ご覧ください!)。しっかりした基盤を作るために、 Qwery (既存のセレクター エンジン) のテストを使い始めました。そこでは、「関係優先クエリ」のテストがいくつか見つかりました。どうやら、CSSselect (私のプロジェクト) は期待どおりの動作を示していませんが、何が期待できるのかわかりません。

すでにドキュメントを検索しましたが、役立つものは見つかりませんでした。私の現在の実装では、それらを次のように解釈します。

  • >と同等です:not(:root)
  • ~+同等です:not(:first-child)
  • 先頭の空白は無視されます

Qwerys の解釈は違うようですが、正式なものはありますか?

4

2 に答える 2

2

いいえ。http://www.w3.org/TR/CSS21/selector.htmlおよびhttp://www.w3.org/TR/css3-selectors/(CSS3)をご覧ください。

  • >:not(:root):rootドキュメントルートを意味するので、1つを除くすべての要素に「等しい」が当てはまります。代わりに、[直接]子コンビネータです。
  • ~≠≠ 。:not(:first-child)_ +主な理由は~、と+が互いに異なり、同等性が推移的であるためです。どちらも兄弟コンビネータであり、一方は一般的なもので、もう一方は隣接するもの用です。
  • 空白は無視する必要があると思います。他に何を表しますか?子孫コンビネータには、その周りに2つの単純なセレクターが必要です。セレクターの文法にも興味があるかもしれません。

もちろん、子コンビネータは、子がドキュメントルートではないことを意味し、隣接するコンビネータは、兄弟が最初の子ではないことを意味します。

于 2012-05-28T22:23:59.890 に答える
1

これらの「リレーションシップファースト」セレクターは非標準の拡張機能であるため、それらを定義する「公式」なものはありません。あなたの説明から、、はそれぞれ> foo、、、+ foo~ foo同等のようです。* > foo* + foo* ~ foo

于 2012-07-28T08:30:38.443 に答える