私は以前にCSSを使用しましたが、以下のCSSスタイルに出くわしましたが、それが何をするのかわからないのです。
a[href^="http:"] {
background: url(img/keys.gif) no-repeat right top;
}
a[href^="http://mysite.com"], a[href^="http://www.mysite.com"] {
background-image: none; padding-right:0;
}
a[href^="http:"]
href
属性値が<a>
で始まるhttp:
要素を選択します。
例:
p[title^="para"] {background: green;}
次と一致します。
<p title="paragraph"> This paragraph should have a green background. </p>
これは、CSS3で利用可能な substring-matching attribute selectors の1つです。値が指定された文字列で始まるhref
属性を持つリンクと一致します。
例として、CSSの例を取り上げ、デフォルトを追加します。
_a {
background: none; padding: 0 1em;
}
a[href^="http:"] {
background: url(img/keys.gif) no-repeat right top;
}
a[href^="http://mysite.com"], a[href^="http://www.mysite.com"] {
background-image: none; padding-right:0;
}
_
そして、次のHTMLをスタイルします。出力スタイルはコメントにまとめられています:
_<ul>
<!-- [1] No background, 1em left and right padding -->
<li><a href="/index.php">My site's page</a></li>
<!-- [2] Background, 1em left and right padding -->
<li><a href="http://example.com">External link</a></li>
<!-- [3] No background, no right padding -->
<li><a href="http://mysite.com">My site's base URL without www</a></li>
<!-- [4] No background, no right padding -->
<li><a href="http://www.mysite.com">My site's base URL with www</a></li>
<!-- [5] No background, no right padding -->
<li><a href="http://mysite.com/page.php">A page in my site with base URL</a></li>
</ul>
_
何が起こっていますか?
a
のみで選択
この要素の_href="/index.php"
_属性は、_http:
_またはその他の値で始まっていません。
背景はありませんが、左右のパディングがあります。
_a[href^="http:"]
_のみで選択
この要素の_href="http://example.com"
_属性は_http:
_で始まりますが、_http://mysite.com
_では始まりません。
左右のパディングと背景画像があります。
_a[href^="http:"]
_および_a[href^="http://mysite.com"]
_によって選択
この要素の_href="http://mysite.com"
_属性は_http:
_で始まり、さらに_http://mysite.com
_で始まります。
2番目のセレクターは最初のセレクターを無効にするため、背景画像と右のパディングは削除されます。
_a[href^="http:"]
_および_a[href^="http://www.mysite.com"]
_によって選択
この要素の_href="http://www.mysite.com"
_属性は_http:
_で始まり、さらに_http://www.mysite.com
_で始まります(wwwに注意してください)。
2番目のセレクターは最初のセレクターを無効にするため、背景画像と右のパディングは削除されます。
_a[href^="http:"]
_および_a[href^="http://mysite.com"]
_によって選択
この要素の_href="http://mysite.com/page.php"
_属性は_http:
_で始まり、さらに_http://mysite.com
_で始まります。
3番目のリンクと比較して、このリンクの属性にはベースURL以外のものが含まれていることに注意してください。ただし、_^=
_は、属性の値がstart withである必要があることを示します。これは、_=
_ではなく、「_http://mysite.com
_」。したがって、このリンクは2番目のセレクターと一致します。
2番目のセレクターは最初のセレクターを無効にするため、背景画像と右のパディングは削除されます。
これらは attribute-starts-with selectors であり、その値で始まるhref
属性を持つ<a>
要素を選択します。 a[href^="http:"]
は、href="http:...."
で始まるhref
を持つすべてのアンカーに一致します。例:
<a href="http://www.google.com">Test</a> <!-- would match -->
<a href="#element">Test</a> <!-- wouldn't match -->
「href」パラメーターが「http:」で始まるすべてのリンクについて、背景をキー画像に設定します(繰り返しなし、右上隅に配置)。
「href」パラメーターが「http://mysite.com」または「http://www.mysite.com」で始まるすべてのリンクについて、背景画像を何も設定しない(および右側のパディングを0に設定する)。
私にとって、これは、ユーザーが重要な画像を表示することで外部リンクを介してWebサイトを離れていることをユーザーに気付かせる巧妙なCSSトリックのように思えます。
(今後使用する予定です。)
W3C docs によると、ルールは言う:
http:
で始まるhref
属性を持つすべてのアンカーhttp://mysite.com
またはhttp://www.mysite.com
で始まるhref
属性を持つすべてのアンカー属性セレクターです。
^ =部分は、アンカータグのhref属性がbegin with http:
最初の例では。