2013-02-02 8 views
5

a[href^="http:"], a[href^="mailto:"]などのCSSセレクタを使用してドキュメント内のすべての外部リンクとメールリンクを照合することができますが、セレクタの引用符セクションで "or"ステートメントを使用する方法があります。 a[href^="(http|mailto):"]CSSセレクタ内のORステートメント

+1

あなたが言及した第1のセレクタは、あなたがやりたいだろう... – sevenseacat

+0

@sevenseacat:それはものではありません彼は言った? – BoltClock

答えて

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 } 

最初のルールは値を持つ 「http://www.example.com」名前空間「ヴァル」の属性ATTを持つ要素のみにマッチします。

第2のルールは、属性の名前空間(名前空間を含まない)に関係なく、属性が の要素のみと一致します。

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

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

+0

['[att | = val]'](http://www.w3。org/TR /セレクタ/#属性表現)は、アトリビュートによって正確に 'val'または' val-'で始まる値と一致する属性セレクタですが、名前空間接頭辞と同様に、尋ねられる機能は提供しません。 – BoltClock

0

私はCSSセレクタの文法をチェックしますが、これを行うための唯一の方法は、カンマ区切りであるように思えるした

selectors_group 
    : selector [ COMMA S* selector ]* 

はまた、これらは、いくつかの関連の語彙ですルール:

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

はありませんORルールが、私は指摘一つのことは、彼らが否定を持っているということです。

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

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

+0

シンボルはコンビネータ( '、'を除く)です。その否定は単純に ':not()'疑似クラスを参照するので、特別なものではありません。 – BoltClock

+0

@BoltClock:私は何も特別ではないことを知っている、私はちょうど私がCSSセレクターの仕様で見つけたいくつかの事柄(私のための関連)を述べた。私は私の答えを取り除くべきですか? –