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):"]
?
2 に答える
私の知る限り、あなたが求めていることをする方法はありません。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を持つ要素のみに一致します。
私は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;)