リンク(aタグ)のCSSデザイン集|下線・ホバー・ボタン化をコピペで実装する方法

リンク(aタグ)のCSSは、色を変えて下線を消すだけで終わらせると、訪問者が「どこを押せるのか」分からないページになります。この記事では、リンクの4つの状態の指定から、下線の調整、ホバー時のアニメーション、ボタン化、スマートフォンでの注意点までを、コピペで使えるコードとあわせて解説します。凝った装飾より先に、押せると分かることを優先してください。

目次

リンクのCSSを書く前に押さえること

person sitting front of laptop
Photo by Christin Hume on Unsplash

結論から言うと、リンクのデザインで守るべき原則は「リンクだと分かること」の一点です。装飾はそのうえで足します。

リンクには4つの状態がある

aタグは、未訪問・訪問済み・マウスが乗っている・押している最中、の4つの状態を持ちます。CSSではそれぞれ :link :visited :hover :active という疑似クラスで指定します。ここにキーボード操作用の :focus が加わります。

ブラウザの既定を上書きしている自覚を持つ

何もしなければ、リンクは青い文字に下線、訪問済みは紫、という表示になります。これは訪問者が長年慣れ親しんだ「押せる印」です。CSSで変えるということは、この共通認識を上書きするということなので、代わりの目印を必ず用意します。

本文リンクとボタンリンクは分けて考える

文章の中にあるリンクと、「お問い合わせはこちら」のようなボタン型のリンクは、同じaタグでも役割が違います。本文リンクは目立ちすぎない、ボタンは目立たせる。指定を分けるために、ボタンにはクラスを付けるのが基本です。

リンクの4つの状態を指定する

基本形|色だけ変える

a:link    { color: #2589d0; }
a:visited { color: #6c5ea8; }
a:hover   { color: #1a6bb0; }
a:active  { color: #c0392b; }

書く順番は「LVHA」で固定する

link → visited → hover → active の順で書いてください。CSSは後に書いたものが優先されるため、順番を入れ替えると :hover:visited に負けて色が変わらない、といった現象が起きます。「LoVe HAte」と覚える定番の順序です。

訪問済みの色は「変えない」も選択肢

ニュースサイトや一覧ページでは、訪問済みの色を変えることで「もう読んだ記事」が分かり、親切です。一方、コーポレートサイトのナビゲーションで訪問済みの色が変わると、統一感が崩れます。用途によって、訪問済みを未訪問と同じ色にする判断もあります。

ふわっと色を変える

a {
  color: #2589d0;
  transition: color 0.25s ease;
}
a:hover {
  color: #1a6bb0;
}

transition を通常状態側に書いておくと、ホバーで色が変わるときも、外れて戻るときも滑らかになります。a:hover 側に書くと戻りが一瞬になるので注意してください。

キーボード操作のfocusを消さない

a:focus-visible {
  outline: 2px solid #2589d0;
  outline-offset: 2px;
}

Tabキーで移動する利用者には、いまどのリンクにいるかを示す枠が必要です。outline: none で消してしまうと操作できなくなります。見た目を整えたい場合は、消すのではなく :focus-visible で色と太さを指定してください。

本文リンクの基本デザイン

an old newspaper article with a black and white photo
Photo by Annie Spratt on Unsplash

下線を消す

a {
  text-decoration: none;
}

消すこと自体は1行ですが、消したら代わりの目印が要ります。本文と明確に違う色にする、ホバーで下線を出す、のいずれかは必ず入れてください。本文リンクに関しては、下線は残すほうが安全です。

下線の太さと位置を調整する

a {
  color: #2589d0;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.25em;
  text-decoration-color: rgba(37, 137, 208, 0.5);
}
a:hover {
  text-decoration-color: #2589d0;
}

下線を残したまま、文字から少し離して細く薄くすると、既定の下線より読みやすくなります。ホバーで下線の色だけ濃くする、という控えめな反応もこの書き方でできます。

外部リンクにアイコンを付ける

a[target="_blank"]::after {
  content: "";
  display: inline-block;
  width: 0.8em;
  height: 0.8em;
  margin-left: 0.3em;
  vertical-align: middle;
  background: url("icon-external.svg") no-repeat center / contain;
}

属性セレクタで「別タブで開くリンク」だけを対象にできます。アイコンは自前のSVGを用意してください。画像を使わず、content: "↗" のように文字で代用する方法もあります。

PDFやファイルへのリンクを区別する

a[href$=".pdf"]::after {
  content: "(PDF)";
  font-size: 0.85em;
  color: #888;
}

href の末尾で判定できます。クリックしたらファイルが開く、ということを事前に伝えておくのは親切な設計です。

ホバーアニメーション

本文リンクに動きを付けるなら、控えめなものに絞ります。ナビゲーションやフッターのリンクで使うことが多い4種類です。

中央から下線が広がる

a.line-center {
  position: relative;
  text-decoration: none;
  color: #2589d0;
}
a.line-center::after {
  position: absolute;
  bottom: -2px;
  left: 50%;
  width: 0;
  height: 2px;
  content: "";
  background: #2589d0;
  transition: width 0.3s ease, left 0.3s ease;
}
a.line-center:hover::after {
  left: 0;
  width: 100%;
}

左から下線が伸びる

a.line-left {
  position: relative;
  text-decoration: none;
  color: #2589d0;
}
a.line-left::after {
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2px;
  content: "";
  background: #2589d0;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
}
a.line-left:hover::after {
  transform: scaleX(1);
}

幅を変える方法より、transform: scaleX で伸縮させるほうが描画が軽く、動きも滑らかです。

左から背景色が流れ込む

a.bg-slide {
  padding: 0.1em 0.3em;
  text-decoration: none;
  color: #2589d0;
  background: linear-gradient(to right, #d9ecfa 50%, transparent 50%);
  background-size: 200% 100%;
  background-position: 100% 0;
  transition: background-position 0.35s ease;
}
a.bg-slide:hover {
  background-position: 0 0;
}

背景を2倍幅のグラデーションにし、表示位置をずらすことで色が流れ込むように見せます。マーカーを引くような表現です。

矢印が右に動く

a.arrow {
  text-decoration: none;
  color: #2589d0;
}
a.arrow::after {
  display: inline-block;
  margin-left: 0.4em;
  content: "→";
  transition: transform 0.25s ease;
}
a.arrow:hover::after {
  transform: translateX(4px);
}

「詳しく見る」のようなリンクに向いています。動く距離は4px程度で十分で、大きく動かすと落ち着きがなくなります。

リンクをボタンにする

cursor on black background
Photo by Liam Briese on Unsplash

基本のボタン

a.btn {
  display: inline-block;
  padding: 0.8em 2em;
  color: #fff;
  text-decoration: none;
  background: #2589d0;
  border-radius: 6px;
  transition: background 0.2s ease;
}
a.btn:hover {
  background: #1a6bb0;
}

display: inline-block を指定しないと、上下の余白が効かず、押しにくいボタンになります。ホバー時は少し濃い色にするだけで十分です。

角丸と影で立体感を出す

a.btn-round {
  display: inline-block;
  padding: 0.8em 2.4em;
  color: #fff;
  text-decoration: none;
  background: #2589d0;
  border-radius: 999px;
  box-shadow: 0 4px 12px rgba(37, 137, 208, 0.3);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
a.btn-round:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(37, 137, 208, 0.4);
}

枠線だけのボタン

a.btn-outline {
  display: inline-block;
  padding: 0.7em 2em;
  color: #2589d0;
  text-decoration: none;
  border: 2px solid #2589d0;
  border-radius: 6px;
  transition: background 0.2s ease, color 0.2s ease;
}
a.btn-outline:hover {
  color: #fff;
  background: #2589d0;
}

主役のボタンの隣に置く、二番手のボタンとして使います。「お問い合わせ」はベタ塗り、「資料を見る」は枠線、のように役割で使い分けます。

矢印付きのボタン

a.btn-arrow {
  position: relative;
  display: inline-block;
  padding: 0.8em 3em 0.8em 2em;
  color: #fff;
  text-decoration: none;
  background: #2589d0;
  border-radius: 6px;
}
a.btn-arrow::after {
  position: absolute;
  top: 50%;
  right: 1.2em;
  width: 8px;
  height: 8px;
  content: "";
  border-top: 2px solid #fff;
  border-right: 2px solid #fff;
  transform: translateY(-50%) rotate(45deg);
}

矢印は、正方形の2辺だけに線を引いて45度回すと作れます。画像を使わないので色の変更も簡単です。

スマートフォンでの注意点

ホバーはマウスがある環境の概念です。タッチ操作では挙動が変わります。

タップするとホバー状態が残る

スマートフォンでリンクをタップすると、ホバーの見た目に切り替わったまま固定されることがあります。派手なホバー演出を付けていると、タップ後に色が変わったまま戻らず、不自然に見えます。

ホバーはマウス環境だけに限定する

@media (hover: hover) {
  a:hover {
    color: #1a6bb0;
  }
}

メディアクエリの hover: hover で、マウスなどホバーできる装置がある環境だけに限定できます。これでタッチ端末ではホバー指定が無視され、状態が残る問題を避けられます。

タップ領域は最低44px四方

指で押すには、リンクの領域が小さすぎると誤操作が増えます。ボタン型のリンクは高さ44px以上を目安にし、本文リンクも行間を詰めすぎないようにしてください。

タップ時の反応はactiveで付ける

a.btn:active {
  transform: scale(0.97);
}

押した瞬間にわずかに縮む、という反応を付けると「押せた」ことが伝わります。ホバーの代わりに、タッチ端末での手応えとして機能します。

実務でやりがちな失敗

man using Apple computer
Photo by Campaign Creators on Unsplash

リンクだと分からない

下線を消し、色も本文とほぼ同じにした結果、どこが押せるのか分からないページになっているケースです。デザイン上はきれいでも、問い合わせが減る原因になります。本文リンクは色を明確に変えるか、下線を残してください。

ホバーでしか目印が出ない

「ホバーすると下線が出る」だけでリンクを示すのは、マウスを乗せるまで分からないということです。スマートフォンではホバー自体がありません。通常状態でリンクだと分かる目印を必ず付けてください。

コントラストが足りない

薄いグレーの背景に薄い青のリンク、のような組み合わせは読めません。文字と背景のコントラスト比は4.5:1以上を確保してください。この基準はWebアクセシビリティの記事で解説しています。

focusを消している

「枠が出るのが格好悪い」という理由で outline: none を全体に当てているサイトがあります。キーボードで操作する人は、現在位置が分からなくなります。消すのではなく、:focus-visible でデザインを整えてください。

すべてのリンクに動きを付けてしまう

本文中の全リンクにアニメーションを付けると、読んでいる途中で視線が奪われます。動きはナビゲーションや主要なボタンに限定し、本文リンクは静かにしておくのが基本です。ページ全体のアニメーションについてはCSSアニメーションまとめで扱っています。

制作会社の視点|リンクは「迷わせない」が最優先

サイト制作の相談で、デザインの評価とは別に必ず確認しているのが「初めて見た人が、どこを押せばいいか迷わないか」です。リンクの装飾はその手段であって、目的ではありません。

役割ごとに3種類だけ用意する

実務では、本文リンク・ナビゲーションのリンク・ボタン型リンクの3種類を決めて、サイト全体で使い回します。ページごとに違うリンクデザインが混ざると、訪問者は毎回「これは押せるのか」を判断し直すことになります。

色は変数にしておく

:root {
  --link-color: #2589d0;
  --link-hover: #1a6bb0;
}
a {
  color: var(--link-color);
}
a:hover {
  color: var(--link-hover);
}

見出しやボタンと同じ変数を使えば、ブランドカラーの変更が1か所で済みます。見出し側の設計はCSSの見出しデザイン集で解説しています。

納品後に増えるリンクを想定する

クライアントが記事を書き足すと、リンクは増え続けます。クラスを付けないと成立しないデザインは運用で崩れるため、本文リンクは素の a に対して安全なデザインを当てておき、ボタンだけクラスで指定する、という構成にしておきます。

よくある質問(FAQ)

ホバーの色が変わりません。

疑似クラスの順番が原因のことが多いです。link → visited → hover → active の順に並べ直してください。それでも変わらない場合は、テーマ側のCSSに上書きされていないかを検証機能で確認します。

下線を消してもいいですか?

ナビゲーションやボタンなら問題ありません。本文中のリンクは、色を明確に変えるなど代わりの目印があれば消せますが、迷ったら残すほうが安全です。

スマートフォンでタップした色が戻りません。

タッチ端末ではホバー状態が残る仕様です。@media (hover: hover) でホバー指定をマウス環境に限定してください。

ボタンにはaタグとbuttonタグのどちらを使うべきですか?

別のページへ移動するならaタグ、フォーム送信やページ内の動作ならbuttonタグです。見た目が同じでも役割が違うため、リンク先があるかどうかで判断してください。

訪問済みリンクの色は変えるべきですか?

記事一覧やリンク集では、読んだものが分かるので変える価値があります。ナビゲーションやボタンでは統一感を優先して、変えないのが一般的です。

外部リンクのアイコンは必要ですか?

別タブで開く、別サイトへ移動する、といった挙動を事前に伝える意味で有効です。特に企業サイトでは、外部サイトへの遷移を明示しておくと訪問者の不安が減ります。

まとめ

リンクのCSSは、4つの状態をLVHAの順で指定するのが土台です。そのうえで、本文リンクは「押せると分かる目印を残す」、ボタンは「クラスを付けて役割を分ける」、スマートフォンは「ホバーをマウス環境に限定する」。この3点を守れば、装飾を足しても迷わないサイトになります。動きを付けるのは、ナビゲーションと主要ボタンだけに絞ってください。

スリーディープラスでは、サイトの導線設計やデザイン調整、WordPressのカスタマイズのご相談を承っています。「リンクやボタンが押されていない気がする」「デザインを整えたい」という場合は、お気軽にお問い合わせください。

最新情報をチェックしよう!

LET’S CONTACT

お問い合わせ

デザインと発信の力で、お客様の強みや想いを形にし、
成果につながるコンテンツを制作します。
「うちの場合はどうなる?」という段階からでも、どうぞお気軽にご相談ください。