フロントエンド
エンジニア
T.K
皆様お久しぶりです!フロントエンドエンジニアのT.Kです。
弊社マスコット
キャラクター
ロージー
久しぶりしゅこね!
T.Kの記事執筆は5ヶ月ぶりしゅこ!
フロントエンド
エンジニア
T.K
えっ!?もうそんなに書いてなかったっけ???
フロントエンド
エンジニア
T.K
しゅこ~
気づけば季節は春、だいぶ暖かくなってきたとはいえ
まだ肌を出すには早いそんなこの時期、皆様いかがお過ごしでしょうか。
私T.Kは早く夏服を着たくてウズウズしながら
メロディックパワーメタルを聴いて体を夏にする、そんな日々を送っております。
さて、今回のテーマはdata属性の使い方。
あなたのコーディングがもっと楽になる、data属性の便利な使い方を大公開!
目次
data属性とは?
data属性とは、HTML5から追加された属性の一つ。
下記のようにdata-hoge
(hoge
は任意に設定可能です)と記述するだけで、data属性を設定できます。
<div data-color="red">
どう使うの?
それではdata属性を使うと便利になるシーンを、紹介していきたいと思います。
ワシまだHTML初心者やし、
まだdata属性はやらんでもええか…
弊社
マスコット
キャラクター
カール
フロントエンド
エンジニア
T.K
カール、そんなことは決してないしゅこよ。
むしろ俺はもっと早く知りたかったしゅこ。
CSSの属性セレクタで、外見を出し分ける
例えばジャンル毎にラベルをつけて、色と文言を変えたい場合。
data属性を設定し、CSSに属性セレクタを記述することで、簡単に外見を出し分けることが可能です。
See the Pen GRNwOgB by LOGICAL STUDIO PR部 (@ls_pr) on CodePen.
クラスで出し分けてもいいのでは?
さて、外見の出し分けという点で、必然的に出てくるであろうこの疑問。
確かにそのとおりですが、data属性を使うと
他のクラスと衝突しない
というメリットが得られます。
私がコーディング初心者の頃、
他人のコーディングを引き継いだとき、CSS名が衝突して変な見た目になる
ということが非常によくありました。
data属性を用いることで、特に意識せずとも他のクラスと衝突せずに済むのです。
(なお私は、他のクラスと衝突しないようなCSS名をつけるようにしています)
CSSの属性セレクタで、状態を出し分ける
- ハンバーガーメニュー
- 開閉メニュー
- トースト表示
というように、JavaScriptにより表示が切り替わる系のものを作る際
このdata属性が非常に役立ちます。
data属性を使って開閉メニューを実装したものを下記に示します。
See the Pen VwmEwRJ by LOGICAL STUDIO PR部 (@ls_pr) on CodePen.
従来ではdata-is-open
の代わりに.is-open
といったクラス名をつけて実装していましたが
data-is-open
という名前のdata属性を用いると、状態が分かりやすくなったのではないでしょうか?
<!-- クラスで実装する場合 -->
<div class="tab is-open"></div>
<!-- data属性で実装する場合 -->
<div class="tab" data-is-open="true"></div>
加えてCSSも衝突しないので、より便利にCSSを記述することができます。
私は状態切り替えを実装する際は必ずdata属性を使っています。
すごく便利なので皆様も一度お試しあれ
JSで値を取得・利用できる
ここまではdata属性を使わんでもクラスでまぁなんとかなるわ、というものでしたが
真にdata属性が活躍するシーンはこれ!
まずは下記をご覧ください。
See the Pen JjbmoGV by LOGICAL STUDIO PR部 (@ls_pr) on CodePen.
a
タグをクリックした際、そのクリックされた箇所についているdata-color属性の値を取得し、利用しています。
このように要素にデータを持たせて、それをJavaScript中で使用したい場合
data属性は非常に大きな力を発揮します。
疑似要素のcontent
にdata属性の内容を適用
皆様は、
というのをご存じでしょうか?
私は最近知りました。
当然ながらdata属性も属性の一つ。
独自に設定したdata属性の値を、content
内で使用することができます!
See the Pen mdOzdqZ by LOGICAL STUDIO PR部 (@ls_pr) on CodePen.
こうすると、before
やafter
要素に対し1個ずつcontent
を記述しなくてもいいので、記述が少なくて済みます。
特にCMSなどでは活躍しそうです。CSSを動的に出力しようと頑張るのは大変ですしね。
おわりに
いろんな使い方ができる、このdata属性。
皆様もぜひこのdata属性を使いこなして、幸せになってください!
ところで
私達ロジカルスタジオは、フロントエンドエンジニアを募集しております!
data-strong-point
を生かして働きたいそこのあなた!ぜひ以下からご応募くださいませ!