リンクテキストにアクセント(画像)をつける

2006年6月30日 20:01

リンクテキストにマウスオーバーで色を変化させたり、というのはよくあると思います。
それではなく、リンクテキストにちょっとした装飾を施しちゃいましょう。
例えば、リンク文字の横に矢印の画像を入れたりとか。

▼EntryMore▼

さてさて、ここでもまたIEがめんどいことになります。
CSSを学べば学ぶほど、IEが嫌いになっていきますw
IEがないか、もっと利口だったらここまで苦労しないのに…という場面は何度も(⊃д⊂)
さて、愚痴はここまでにしてw

いつものようにサンプルです。(いつもサンプルが素っ気なくてゴメンナサイ)
http://www.green.dti.ne.jp/edo/web-test/test9/

さてさて、まずはFirefoxなどの”モダンブラウザ”と呼ばれているブラウザでの動作からいってみましょー。
(IEのせいで未だにこれを仕事で使った事はありませんがw)


#container p a:after{
content: url("arrow.gif");
}

ポイントは「:after」です。
これも:hoverなどと同じ疑似クラスです。
これの意味は、指定した要素の”後に”、指定したCSSを適用します。
contentは普段あまり見慣れないプロパティですが、簡単に言うと、
そこで指定したものをその要素の”後に”表示します。

つまり、ここで言えば指定した画像を表示することになります。
また、文字の表示も可能です。
その場合は「content: "あいう";」などのように使います。
この場合は指定した要素の最後に「あいう」という文字を表示します。
それ以外は普段作っているCSSと同じものが適用できます。
colorやbackgroundなどの見慣れたものです。
もちろん、指定するのも普段と同じようにできます。
「p.hoge:after」とすれば、クラスにhogeを指定した場合に
その要素の後に指定した内容が表示されます。

なので、リンクごとに後ろに配置した画像を変える、なんてことも出来ます。
また、複数の疑似クラスを適用することもできます。


#container p a:hover:after{
content: url("arrow_o.gif");
}

こうすることで、マウスオーバーしたときに後ろについている画像も入れ替えられます。
これが使えるととても便利なんですけどねぇ…。
ほら、リンク全部に「■」をつけてたり、なんかしら追加したいときあるじゃないですか。
これを、CSSがすべて自動でやってくれるので、HTML書くときはリンクの文字を書くだけでいいのです。
もし、「■」を「□」に変更するときも、CSSの1カ所を変更するだけで簡単に変えられるし。
もぅもぅ、IEが大嫌いです;;

さてさて。だからといってIEをガン無視するわけにはいかないのでw
(なんていってもシェアNo.1ですから…)
代用を考えないといけません。
それが、これです。


* html #container p a{
background: url("arrow.gif") right center no-repeat;
padding-right: 22px;
}

簡単に説明すると、リンクの右側に余白を余分にくっつけて、
そこに背景画像として表示したい画像を表示させる、と。
まぁそんだけですw

これにさらに


* html #container p a:hover{
background: url("arrow_o.gif") right center no-repeat;
padding-right: 22px;
}

と、:hoverをつけると、最初に書いた物と同じような動作になります。
ただ、:afterと違い、余白のためリンクの下線は引かれません。
どうしても画像までラインを引きたい場合は


* html #container p a{
border-bottom: solid 1px #0000ff;
background: url("arrow.gif") right center no-repeat;
text-decoration: none;
padding-right: 22px;
}

とかして、リンクの下線を非表示にし、
border-bottomを指定してやることで代用は可能です。
(ただ若干下線が文字から離れますが)

さて、今回もIEだけに適用させるためにハックを使ってます。
(使うな、とかいってるのに使いまくりですね;)
まぁ、IEが:afterに対応するまではpadding-rightで乗り切るのもありかもw

ここではスターハックを使用しています。
ちなみにスター7・ハックとはまた違いますw
ただ、これもバグ技なので使わないにこした事はありません(;´д`)

トラックバックURL

http://css-eblog.com/cgi-bin/mt/mt-tb.cgi/8

コメント

1 - きっぴ さん

おぉ〜(◎w◎)/★
私も、CSSでリンクテキストにアイコンつけますよ〜。とかに設定してメニューによく使いますぅ。

★「:after」なるほどぉ・・・。
使ったこと無かったです。

こ〜んなに丁寧に書いてくださってありがとうございますっ!

面白そうなので、今度使ってみたいです。

2006年7月 5日 19:34

2 - えど さん

きっぴさん、どもです(*'-')
いえいえ、分かりやすいように書くことで、自分も復習になるし、なにげに気づくことも多いんですよ!
なにかリクエストとかあったらコメントください(○'ω'○)ノ

2006年7月 5日 20:48

コメントを投稿





承認されるまでコメントは表示されません。しばらくお待まちください。