データ属性とは
HTML5 (en-US) は、特定の要素に関連付ける必要があるが、定義済みの意味を持つ必要のないデータに対する拡張性を念頭に置いて設計されています。 data-* 属性により、標準外の属性やDOM の追加プロパティなどの特殊な方法に頼らずに、標準的な意味のある HTML 要素に追加情報を格納することができます。
データ属性の使用 – ウェブ開発を学ぶ | MDN
とのこと。
要は、HTMLタグに設定できる属性の一つ。独自の属性を設定して、JSとかから属性を取得したり更新したりできるようになる。
カスタムデータ属性とも呼ばれているらしい
基本書式
HTML
<div data-*****="data-attribute">This is a data attribute.</div>
「data-*****」の「*****」を自由に設定することができる。
SCSS
//属性に設定されている値で指定する
div[data-*****="data-attribute"]{
display: inline-block;
}
//属性で指定する
div[data-*****]{
display: inline-block;
}
疑似要素で出力する
HTML
<div data-pseudo="これは疑似要素">こっちが素の要素</div>
SCSS
div {
position: relative;
display: grid;
grid-template-columns: auto;
&::before {
content: attr(data-pseudo);
grid-row: 1;
}
}
出力結果
こっちが素の要素
JavaScriptで値を処理
個人的にはJSで処理することが多い。以下は設定されている値を変更する方法。
HTML
<div id="SampleTarget" data-pseudo="値の変更前">こっちが素の要素</div>
SCSS
div {
position: relative;
display: grid;
grid-template-columns: auto;
&::before {
content: attr(data-pseudo);
grid-row: 1;
}
}
JavaScript
let SampleTarget = document.getElementById('SampleTarget');
SampleTarget.dataset.pseudo = 'JSで値を変更する';
出力結果
こっちが素の要素