【CSS】スマホでチェックマークや絵文字の色が変わらない原因と解決策(︎の使い方)

「PCではCSSで色をつけたチェックマーク(✔)が、スマホで見ると勝手に黒くなっている…」

color: red; と指定しているのに、なぜかCSSのスタイルが無視され、iPhoneの絵文字のような、テカテカした立体的なチェックマークが表示されてしまう…」

そんな経験はありませんか?

実はこれ、CSSのバグではなく、スマホ特有の「絵文字の仕様」が原因なんです。

今回は、その理由と、一瞬で解決する魔法のコードをご紹介します。

目次

原因はスマホの「おせっかい」機能?

スマホ(特にiPhoneなどのiOS端末)は、特定の記号を見つけると

「これはテキストじゃなくて、リッチな絵文字で表示したほうがいいよね!」

と自動で判断してしまいます。

これを「絵文字プレゼンテーション」と呼びます。

絵文字として描画されると、それは「文字」ではなく「画像」に近い扱いになるため、CSSの color プロパティが効かなくなってしまうのです。

解決策:魔法のコード「︎」を添えるだけ

最も簡単な解決策は、チェックマークのすぐ後ろに ︎ というコードを書き加えることです。

具体的なコード

<span>✔</span>

<span>✔&#xFE0E;</span>

これは何?

これは「バリエーション・セレクター(異体字選択子)」と呼ばれる命令の一つです。

  • &#xFE0E; :「この文字をテキストスタイルで表示して!」
  • &#xFE0F; :「この文字を絵文字スタイルで表示して!」

これを末尾に付けるだけで、ブラウザに「勝手に絵文字にしないで、普通の文字として扱ってね」と伝えることができます。

その結果、CSSの色指定がしっかり反映されるようになります。

他の絵文字にも使える?

この方法は、チェックマーク以外にも以下のような「歴史の長い記号」に有効です。

  • 矢印系: ➡、⬅、⬆
  • 記号系: ⚠(警告)、✉(メール)、☎(電話)、❓(はてな)
  • 数字系: 1、2、3…

ただし、比較的新しい絵文字(😀 や 🍎 など)は、そもそも「テキスト用のデザイン」がシステム内に用意されていないため、このコードを使っても色が変わらない(あるいは文字化けする)ことがあるので注意しましょう。

もっと確実にデザインを統一したいなら

「どのデバイスでも100%同じ色・形で見せたい」という場合は、文字としての絵文字を使うのではなく、以下の手法を検討するのが制作現場では一般的です。

  1. SVG画像を使う: ベクターデータなので、色も形も自由自在。拡大しても綺麗です。
  2. CSSで自作する: border を組み合わせて「L字」を作り、回転させることでチェックマークを表現します。
  3. アイコンフォント: Google Fonts (Material Symbols) などを使えば、文字と同じ感覚で扱えます。

まとめ

スマホでチェックマークの色が黒くなってしまうのは、スマホが良かれと思って絵文字に変換しているからでした。

まずは手軽な &#xFE0E; を試してみて、それでもダメならSVGやCSS自作に切り替える、というステップがおすすめです。

サイトの中でチェックマークを使っているなら、一度確認してみましょう。

目次