PCでは無効・スマホでは有効にする電話リンクの作り方(CSSだけで対応)

Webサイトに電話番号を載せるとき、
スマホではタップして電話できると便利ですよね。

ただ一方で、PC表示のときに
・クリックしても意味がない
・誤ってクリックされる
・リンク色や下線が不自然
と感じたことはないでしょうか。

この記事では、
「スマホでは電話リンクを有効にし、PCでは無効にする方法」をHTMLは変えず、CSSだけで実現する方法を解説します。

※コードに関するご質問や修正の依頼はお受けいたしかねます。
 もし、修正が必要ならChatGPTに聞くのが良いです。

やりたいことの整理

まず、今回実現したい状態を整理します。

・スマホ表示
 → 電話番号をタップすると発信できる

・PC表示
 → 電話番号は表示されるが、クリックできない
 → 見た目も普通の文字と同じにする

この条件を満たす方法を考えます。

HTML

HTMLは、よくある電話リンクの形です。

<a class="tel-number" href="tel:09000000000">090-0000-0000</a>

ポイントは、
class に tel-number を付けていることです。

この class を目印にして、CSSで制御します。

CSS

/* PC表示のときだけ電話リンクを無効化 */
@media screen and (min-width: 768px) {
  a.tel-number {
    pointer-events: none;   /* クリック無効 */
    color: inherit;         /* 文字色を通常の文字と同じに */
    text-decoration: none;  /* 下線を消す */
    cursor: default;        /* マウスカーソルを普通に */
  }
}

CSSの内容をひとつずつ解説

min-width: 768px
→ 画面幅が768px以上のとき(PC・タブレット想定)だけ適用されます。

pointer-events: none
→ クリックやタップを受け付けなくします。
 これにより、PCでは電話リンクが無効になります。

color: inherit
→ 親要素と同じ文字色にします。
 リンク特有の青色を消すためです。

text-decoration: none
→ リンクの下線を消します。

cursor: default
→ マウスを乗せたとき、指マークではなく通常の矢印にします。

考え方(なぜCSSでできるのか)

スマホとPCの違いは「画面の横幅」です。

CSSには
「画面幅が〇px以上のときだけ、このスタイルを適用する」
という指定ができます。

この仕組み(メディアクエリ)を使えば、

・画面が小さい → スマホ想定
・画面が大きい → PC想定

として、見た目や挙動を切り替えられます。

スマホではどうなるのか

このCSSは
「画面幅が768px以上のときだけ」効きます。

そのため、

・スマホ表示
 → CSSは適用されない
 → tel:リンクはそのまま有効

という状態になります。

HTMLを分けたり、JavaScriptを使う必要はありません。

画面幅の調整について

768px は一例です。

例えば、
・PCのみを対象にしたい場合 → 1024px
・タブレットも含めたい場合 → 768px

など、サイトに合わせて調整できます。

まとめ

・HTMLはそのまま
・CSSだけでスマホとPCの挙動を切り替え可能
・スマホでは電話リンク有効
・PCではクリック無効&見た目も自然

電話番号を安心して掲載したい場合、
シンプルで使いやすい方法なのでおすすめです。

コメント

タイトルとURLをコピーしました