<a>タグのbackgroundにテキストリンクアイコンを設置
テクストリンクは<a>タグなのでこれに設定すれば自動的にアイコンをつけることができます。
まずはShowing Hyperlink Cues with CSS | Ask the CSS Guyからアイコンをダウンロードさせて頂きます。
zipファイルを解凍したら使用するアイコンをまずは自分のブログに貼り付けます。
私は

投稿編集画面でHTMLモードにすると貼り付けたアイコンの自分のブログの中でのURLがわかります。
1 |
< img border = "0" src = "http://3.bp.blogspot.com/-a3uCwhz3Qv0/icon_external.gif" /> |
1 2 3 4 |
a{ padding-right : 18px ; background : transparent url (上の~のアドレスを入れる) no-repeat right center ; } |
1 |
]]></ b:skin > |
ところがこの方法ですとブログが

タイトルやアーカイブ、画像の後ろにも

アイコンをくっつける<a>タグを絞る方法
アイコンをくっつける<a>タグを限定する方法は以下の様なものがあります。
リンク先の最終語句で限定する。.pdfで終わるファイルへのリンクのみアイコンをつける例。
1 2 3 |
a[href $= '.pdf' ] { } |
1 2 3 |
a[href ^= "mailto:" ] { } |
1 2 3 |
a[href ~= 'genteigoku' ] { } |
1 |
<a class= "kurasumei" href= "aikontuketairinku.html" >アイコンをつけたいリンク先</a> |
1 2 3 |
a[class = "kurasumei" ] { } |
1 2 3 |
a[rel= "popup" ] { } |
classでの限定はうまく動かないとかなんとか書いてあります。
外部リンクにのみアイコンを表示する方法
除外する語句が設定できればBloggerの自分のブログのアドレスと画像へのリンクを除外できそうですが除外する語句を設定する方法はないようです。
そこでCSSで外部サイトへのリンクの後ろにアイコン画像を表示する|Webparkで紹介されている方法を使います。
まずはhttpで始まるリンクにのみアイコンをつけます。
1 2 3 4 |
a[href ^= "http" ] { padding-right : 18px ; background : transparent url (アイコンのアドレスを入れる) no-repeat right center ; } |
1 2 3 4 |
a[href ^= "http://p--q.blogspot." ] { padding-right : 0px ; background : none ; } |
さらにjpgファイルへのリンクの設定も同様に上書きします。
1 2 3 4 |
a[href $= ".jpg" ] { padding-right : 0px ; background : none ; } |
まとめると以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
a[href ^= "http" ] { padding-right : 18px ; background : transparent url (アイコンのアドレスを入れる) no-repeat right center ; } a[href ^= "http://p--q.blogspot." ] { padding-right : 0px ; background : none ; } a[href $= ".jpg" ] { padding-right : 0px ; background : none ; } |
投稿本文のリンクのみに限定してアイコンをつける方法
さらにクラスを限定した<a>タグのみにCSSを適応することで、投稿部分のみに限定してアイコンをつけることにしました。
まずは投稿部分のクラス名を探します。
テンプレートのHTMLで投稿本文部分は<data:post.body/>です。
このサイトではモバイルサイトは使っていませんので<b:includable id='mobile-post' var='post'>の部分はいじらず<b:includable id='post' var='post'>の中のみ見てみます。
<b:includable id='post' var='post'>のなかに<data:post.body/>が2箇所にでてきました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
< b:if cond = 'data:blog.metaDescription == ""' > <!-- Then use the post body as the schema.org description, for good G+/FB snippeting. --> < div class = 'post-body entry-content' expr:id = '"post-body-" + data:post.id' itemprop = 'description articleBody' > < data:post.body /> < div style = 'clear: both;' /> <!-- clear for photos floats --> </ div > < b:else /> < div class = 'post-body entry-content' expr:id = '"post-body-" + data:post.id' itemprop = 'articleBody' > < data:post.body /> < div style = 'clear: both;' /> <!-- clear for photos floats --> </ div > </ b:if > |
この<b:if cond='data:blog.metaDescription == ""'>というif文は何を場合分けしているのかわかりませんが、いずれもクラスは'post-body entry-content'です。
これはpost-bodyとentry-contentという2つのクラスが指定されていることを示します。
1 2 3 |
.post-body .entry-content a[href ^= "http" ] { } |
entry-contentは<data:post.body/>の部分にしかでてきませんので、このクラスで限定することにしました。
1 2 3 4 5 6 7 8 9 10 11 12 |
.entry-content a[href ^= "http" ] { padding-right : 18px ; background : transparent url (アイコンのアドレスを入れる) no-repeat right center ; } .entry-content a[href ^= "http://p--q.blogspot." ] { padding-right : 0px ; background : none ; } .entry-content a[href $= ".jpg" ] { padding-right : 0px ; background : none ; } |
1 |
]]></ b:skin > |
これでうまくいきました。
.entry-content a[href ^="http"]の条件を一番下に持ってくると画像などにもアイコンがついてしまいましたので順番も大事です。
自分のブログ内のリンクにもアイコンをつける
投稿本文のリンクにのみアイコンをつける方法がわかったのでブログ内リンクにもアイコンをつけることにしました。
アイコンは

a[href ^="http://p--q.blogspot."]に内部リンクのアイコン設定部分を変更するだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
.entry-content a[href ^= "http" ] { padding-right : 18px ; background : transparent url (外部リンクアイコンアドレス) no-repeat right center ; } .entry-content a[href ^= "http://p--q.blogspot." ] { padding-right : 18px ; background : transparent url (内部リンクアイコンアドレス) no-repeat right center ; } .entry-content a[href $= ".jpg" ] { padding-right : 0px ; background : none ; } .entry-content a[href $= ".JPG" ] { padding-right : 0px ; background : none ; } |
backgroundプロパティの解説
仕組みがよくわからないまま記事を書きましたがbackgroundプロパティについて学習したので追記します。
スタイルシート講座 - 超初心者のためのホームページ作成講座に詳しいです。
backgroundプロパティは背景に関する設定ができます。
1 2 3 |
タグ{ background :color値 image値 repeat 値 attachment値 position値; } |
colorは背景色、imageは背景に設置する画像、repeatは背景に設定した画像を繰り返し設定、attachmentはスクロールと一緒に背景画像を動かすかどうか、positionはタグ内での背景画像の相対位置の設定、になります。
1 2 3 |
タグ{ transparent image値 repeat scroll position値; } |
背景色は透明、背景画像は繰り返す、スクロールと一緒に動かす、ということです。
image値にはurl("ファイル名")で画像を指定します。
position値は2個あり1個目はタグ内の左からの位置、2個目は上からの距離、になります。
1 |
background : transparent url (外部リンクアイコンアドレス) no-repeat right center ; |
1 |
padding-right : 18px ; |
今回はテキストリンクの右側にアイコンを表示しましたが、左側に表示するにはrightをleftに書き換えて以下のようにすればよいですね。
1 2 3 4 |
a{ padding-left : 18px ; background : url (外部リンクアイコンアドレス) no-repeat left center ; } |
こんな感じになります。
参考にしたサイト
リンク先の拡張子に併せてアイコンを自動挿入する方法「Showing Hyperlink Cues with CSS」 | DesignDevelop
英語ページの日本語解説です。
Showing Hyperlink Cues with CSS | Ask the CSS Guy
英語での詳説です。アイコンのダウロードもできます。
CSSで外部サイトへのリンクの後ろにアイコン画像を表示する|Webpark
アイコンをつけるリンクを限定する方法がいくつか紹介されています。
スタイルシート[CSS]/CSSの基本/クラス名を使った指定 - TAG index Webサイト
CSSでのクラス名の扱い方の解説。
スタイルシート講座 - 超初心者のためのホームページ作成講座
backgroundプロパティの解説
ただいまうまく動いていないことに気づきました。ないかとバッティングしているのでしょうか。
返信削除原因がわかりました。テキストリンクのCSSを書いた上に相手のいない}があることが原因でした。
返信削除background: transparent url(外部リンクアイコンアドレス) no-repeat center right;
返信削除となっていたのをrightとcenterを入れ換えて訂正しました。
なぜかこれでもうまく表示されていたのですが、本来「左からの位置」「上からの位置」の意味なので訂正しました。