5

One might use a CSS selector such as a[href^="http:"], a[href^="mailto:"] to match all external and mail links within a document, but is there a way to use an "or" statement within the quotes section of the selector like so: a[href^="(http|mailto):"]?

4

2 に答える 2

5

私の知る限り、あなたが求めていることをする方法はありません。CSSセレクターの仕様では、属性セレクターと一緒に使用すると、パイプ文字が別の目的で使用されます。名前空間の区切り文字として使用されます。

W3Cのセレクター仕様によると:

属性セレクターの属性名は、CSS修飾名として指定されます。以前に宣言された名前空間プレフィックスは、名前空間セパレーター「垂直バー」(|)で区切られた属性名の前に付加できます。XML推奨の名前空間に従って、デフォルトの名前空間は属性に適用されません。したがって、名前空間コンポーネントのない属性セレクターは、名前空間のない属性( "|attr"と同等です。これらの属性は"にあると言われます。要素タイプごとの名前空間パーティション」)。名前空間プレフィックスにはアスタリスクを使用できます。これは、属性の名前空間に関係なく、セレクターがすべての属性名と一致することを示します。

CSS examples:

@namespace foo "http://www.example.com";
[foo|att=val] { color: blue }
[*|att] { color: yellow }
[|att] { color: green }
[att] { color: green }

最初のルールは、値が「val」の「 http://www.example.com 」名前空間の属性attを持つ要素のみに一致します。

2番目のルールは、属性の名前空間(名前空間なしを含む)に関係なく、属性attを持つ要素のみに一致します。

最後の2つのルールは同等であり、属性が名前空間にない属性attを持つ要素のみに一致します。

出典:http ://www.w3.org/TR/selectors/#attrnmsp

于 2013-02-02T06:10:41.913 に答える
0

私はCSSセレクターの文法をチェックしていましたが、これを行う唯一の方法はコンマ区切りを使用することです:

selectors_group
  : selector [ COMMA S* selector ]*

また、これらはいくつかの関連する語彙規則です:

{w}"+"           return PLUS;
{w}">"           return GREATER;
{w}","           return COMMA;
{w}"~"           return TILDE;

ANDルールもORルールもありませんが、私が注意したことの 1 つは、それらには否定があるということです。

"{N}{O}{T}"("  return NOT;)

http://www.w3.org/TR/selectors/#w3cselgrammar

于 2013-02-02T06:28:23.813 に答える