ドキュメント内のアンカー タグのグローバル ルールがあります。
a,a:hover {border-bottom: 1px solid #ccc;}
しかし、境界線は画像では見栄えがよくありません。純粋なcssのみを使用して画像を含むアンカータグの境界線を削除する方法があるかどうか興味がありましたか?
私はこれを見つけました: http://konstruktors.com/blog/web-development/1122-remove-border-from-image-links/
基本的には、次のような非常に単純なハックです。
a img { border:none; vertical-align:top; }
それは魅力のように機能し、ブラウザーの競合はありません。詳細については、記事を参照してください。
編集:border:none
ほとんどの状況で実際には何も役に立ちません。境界線は img タグではなくアンカー上にあるため、アンカーされた画像の境界線をグローバル CSS リセットで既にゼロに設定している場合は、の境界線を画像の後ろvertical-align:top
に押し上げるだけで済みます。a
見えなくなります (画像が不透明である限り)。
いいえ、現在 CSS には、子孫に基づいて要素を選択するセレクターはありません。JavaScript または CSS のクラスを使用する必要があります。
最も確実なのclass
は、画像を含まないすべてのリンクで属性を使用し、CSS ルールで対応するクラス セレクターを使用することです。
ほとんどのリンクに画像が含まれていない場合は、否定的なアプローチを使用して、画像を含むリンクにクラスを設定し、CSS でセレクターclass=imagelink
を使用できます。:not(.imagelink)
へのサポート:not(...)
は広く行われていますが、普遍的ではありません。そのようなサポートを期待しないさらに別のアプローチは、質問のようにすべてのリンクに下の境界線を設定し、画像リンクの場合はオフにすることです。
a.imagelink {border-bottom: none;}
残念ながら不可能です!私はjqueryを使用してこれを行っただけだと思います。
を使用css
することはできませんが、を使用するcssParentSelector.jsスクリプトをcss
追加すると使用できます。ここに例がありますjQuery
a! > img { border: none; }
上記のcss
ルールは、a
タグの親である場合にタグから境界線を削除しますimg
が、それでも純粋css
ではなく、依存関係があります。
このvertical-align
トリックは、透明でない画像でのみ[うまく]機能しa
line-height
、画像の高さよりも大きい場合はまったく機能しません (小さなソーシャル ネットワーキング アイコンを考えてみてください)。
ここで受け入れられた解決策を使用できたらいいのにと思いますが、上記の問題とともに、テキスト ブロック内のインライン画像の配置がずれてしまいます。
IE8 以前の場合はバックアップシャドウとして、box-shadow
の下部に白を塗りつぶすことにしました。これで終わりです。レイアウトを台無しにしません:a > img
filter
a { text-underline: none;
border-bottom: 1px solid blue; }
a img { box-shadow: 0 .333em 0 0 white; /* white, or your background color */
filter: progid:DXImageTransform.Microsoft.Shadow... etc }