CSS

data属性で「日本語+英語」見出しレイアウトを作る

Webサイト制作でよくある「日本語+英語」の見出しレイアウト。
span要素を増やすほどでもないけれど、CSSだけで完結させたいそんな場面で使える方法です。
この記事では、

  • data属性を使った見出しレイアウトの作り方
  • before / after で表示順がどう決まるか
  • data属性が本当に向いている用途
  • SEO的に問題はないのか

を紹介します。

data属性+擬似要素で作る見出しレイアウト

まずは実装例です。

HTML

<h2 data-en="News">お知らせ</h2>

HTMLはとてもシンプルで、日本語の見出しだけを書き、英語はdata属性に持たせます。

CSS(::after を使う場合)

h2 {
font-size: 3rem;
}
h2::after {
content: attr(data-en);
display: block;
font-size: 1.4rem;
}

この場合、表示は次の順番になります。

  • 上:日本語(お知らせ)
  • 下:英語(News)

CSS(::before を使う場合)

h2::before {
content: attr(data-en);
display: block;
font-size: 1.4rem;
}

こちらは逆に、

  • 上:英語(News)
  • 下:日本語(お知らせ)

となります。
before / after を使い分けるだけで、表示順はコントロール可能です。

この方法のメリット

① HTMLをシンプルに保てる

<h2 data-en="News">お知らせ</h2>

要素を増やさずに実装できるため、

  • マークアップが読みやすい
  • デザイン変更にも対応しやすい

というメリットがあります。

② クラスの増殖を防げる

英語見出し専用の span やクラスを増やさなくて済むため、 軽い装飾用途にはちょうどいい実装です。

③ data属性は「状態・分類」を表すのが得意

data属性は、もともと

  • 種別
  • 状態
  • カテゴリー

といった意味情報を持たせる用途に向いています。

<li data-category="news">お知らせ</li>
<li data-category="event">イベント</li>
[data-category="news"] {
background-color: blue;
}
[data-category="event"] {
background-color: orange;
}

この考え方を見出しにも応用している、という位置づけです。

ただし注意点もある

便利な方法ですが、万能ではありません

SEO的にはどうなのか?

結論から言うと、

data属性+擬似要素で表示したテキストは、SEO評価の対象にはなりません。

理由は、

  • data属性の値はHTMLのテキストノードではない
  • 擬似要素の文字はDOM上に存在しない

ためです。
つまり今回の例では、

  • 「お知らせ」:SEO評価される
  • 「News」:評価されない

という扱いになります。

この方法が向いているケース / 向いていないケース

向いている

  • 英語表記は装飾的な意味合い
  • SEO上は日本語を重視したい
  • HTMLをできるだけシンプルにしたい

向いていない

  • 英語キーワードでも検索流入を狙いたい
  • 英語見出しにも意味を持たせたい
  • アクセシビリティを強く意識する必要がある

この場合は、HTMLに両方書く方法を選ぶのが安全です。

まとめ

  • data属性+擬似要素で見出しレイアウトは作れる
  • before / after で表示順はコントロールできる
  • data属性は「装飾や状態」を表す用途に向いている
  • SEOや意味を持たせたい文字はHTMLに書く

使いどころを理解していれば、 data属性はレイアウト実装の強い味方になります。

しろ

しろ

主にフロントエンドを担当するエンジニアです。現在はデザインの勉強を始め、いろいろなパーツ制作に取り組んでいます。最近はFigmaの最新アップデートやAI連携機能に注目しています。

関連記事