ここでは、外部リンクと内部リンクを区別するため、a タグにリンクアイコンを付ける方法を紹介します。
また、マウスカーソルがリンクの上に乗ったとき、色が変わる調整も一緒にやっています。
こんにちは、HARU( @HARU )です。
ブログや Web サイトを運営していると必ずと言っていいほど、外部リンク、または内部リンクなどのリンクタグ( a タグ )を使うことがあります。
今回は、そんなリンクの見た目を CSS で装飾する方法を紹介します。
ここでは例として、Blogger の QooQ を使って CSS の変更を行いますが、応用すれば別のテンプレートでも使えます。
テンプレートの編集( ソースコード改変 )をするときは、必ずバックアップを取ってから編集しましょう。
不安な方は以下の記事を参考にしてください。
外部リンクと内部リンク
外部リンクと内部リンクの違いは、リンク先が自分のブログや Web サイト外なのか、内なのかの違いです。
言葉通りの意味ですね。
SEO の観点から言うと、外部リンク、内部リンク自体はとても重要です。
しかし、ここで紹介している外部リンクと内部リンクを区別する調整などは、大した意味を持ちません。
ハッキリ言って自己満の世界ですねw
外部リンクアイコンの設置
リンク先が外部なのか、内部なのか分かりやすくするため、外部リンクにアイコン( )を設置します。
Font Awesome の導入
Font Awesome を導入していない場合、以下の記事を参考に導入してください。
CSS 追記
以下の CSS を Blogger テンプレートの CSS 欄に記述します。
/* 外部リンクアイコン表示 */
/* **** には自分の URL */
#single-content a:not([href^="****"])::after {
margin: 0 3px;
font-family: FontAwesome;
vertical-align: middle;
content: '\f08e';
margin-left: .5em;
}
href^="****" の **** には自分のブログ URL を入力する。
他のテンプレートを使っている場合、#single-content を自分のテンプレート環境に合わせる。
上記 CSS は、自分のブログ以外のリンクにはアイコンを付けるという意味になります。
more タグを使っている場合
ブログ記事内に more タグを使っている場合、意図せずアイコンが表示してしまうことがあります。
以下の CSS を追記することで、アイコン表示を防ぐことができます。
/* more タグ対応 */
#single-content a[name]::after{
display: none;
}
自動で目次生成をしている場合
私のブログを参考に、自動で目次の生成をしている場合、目次に意図せずアイコンが表示してしまいます。
以下のページに解決策を追記したので、参考にしてください。
Blogger で画像にリンクアイコンが表示されてしまう場合
コメントにて質問があったので追記しておきます。
Blogger で画像を挿入した場合、別ウィンドウで表示するためのリンク( a タグ)が自動で付与されます。
a タグを手動で消している方以外は、アイコンを非表示にした方が見栄えがいいでしょう。
方法は他と同じように、画像のリンクにはアイコンを表示させない CSS を記述します。
#single-content .separator a::after {
display: none;
}
ちなみに Blogger の標準では画像を挿入したとき、<div class="separator">が自動で付与されます。
なので上記 CSS は、.separator内の a タグにはアイコンを表示させないという意味になります。
こんな感じで、意図せず表示してしまったアイコンは、非表示にすることができるので参考にしてください。
マウスを乗せたときにリンクの色を変える
リンクタグ( a タグ )にマウスが乗ったときに、リンクの色が変わるように CSS を変更します。
リンク色変更イメージ
CSS 追記
以下の CSS を Blogger テンプレートの CSS 欄に記述します。
/* リンク色変更 */
#single-content a:hover{
color : #ff7043;
}
はじめまして、こちらの外部リンクの導入を何度かしてると、画像ごとにアイコンが表示されたり、また目次もこちらのコードを使ってないために目次全てにアイコンが表示されたりとするので、仕様はやめています。
返信削除大変申し訳ないですが、せめて画像にアイコンが表示されない設定にすることはできますでしょうか。お忙しいところ大変失礼いたしました
はじめまして!コメントありがとうございます。
削除基本的には「more タグを使っている場合」と同様に、“画像の a タグには適用しない”という CSS を追記することで解決できます。
Blogger の標準的な画像を挿入した場合、<div class="separator"~というタグが画像に付くと思いますので、そちらの中の a タグには適用しない CSS を以下に記載します。
#single-content .separator a:after{
display: none;
}
わざわざありがとうございます。
返信削除コメント一覧にもアイコン表示されてましたが、素人なりに検証ツールでタグをみて、ペタペタ何回か貼り付けて消えるパターンを探していると見つけることもできました。
こんにちは、一つだけ質問させていただければ幸いです
返信削除サイトマップをメニューバーにつけてるのですが、そこでは外部リンクのアイコンが表示されてしまいます
一応検証ツールで調べて.toc-entry-col1タグを同じようにしてたのですが、消えません。
教えていただけますと幸いです。。。たいへんしつれいいたしました
検証ツールにて、直接CSSを追記する方法はご存じでしょうか?
削除そこで消すことができた場合、CSSの記述順序が影響している可能性がある気がします。
CSSの記述する順序を変えてみてはどうでしょうか?
以下はCSSの基本を書いた記事になります。参考にしてください。
https://indoor-days.blogspot.com/2019/09/CSS.How-to-use.html
はじめまして
返信削除先日、Bloggerを始めたばかりの者です
ふじやん様のF-light (https://f-light-theme.blogspot.com/)というテーマを使用しているのですが、こちらのカスタマイズでは適用できずに困っています
ソースコードをそのまま貼り付けるでは適用されないのは理解していますが、本文に書かれてる「#single-content を自分のテンプレート環境に合わせる」とは具体的にどのようなことを指すのでしょう?
ご教示いただけますと幸いです
こんにちは!
削除お返事遅くなって申し訳ございません。。。
ここでは、aタグを使う場所について指定しています。
例えばQooQの場合、#single-content は記事欄の場所を意味しています。
つまり #single-content a:not([href^="****"])::after の意味は
「QooQ記事欄内に設置したaタグについて、指定したURL以外の後に○○をする」という意味となります。
”自分のテンプレート環境に合わせる”とは、テンプレート毎に指定する場所が違うので調整してください。という意味となります。
ふじやんさんのテーマを拝見しましたが、例えば記事欄内のaタグは「.post-body a」で制御されてます。
削除.post-body a:not([href^="****"])::after (*は自分のブログURL)で設定すると、記事欄内のaタグは記事通りの表示になるかと思います!
実際に検証したわけではありませんので、間違っていたらまたコメントください!