目次
目次
導入
文法
データ属性だけを使用できますか?
データ属性を使用したスタイル
属性セレクターの特異性
症例と感受性のプロパティ値
使用データのプロパティを視覚化します
スタイル使用の例
JavaScriptのデータプロパティへのアクセス
データプロパティのJSONデータ
JavaScriptユースケース
仕様
ブラウザのサポート
デスクトップ
モバイル/タブレットPC

HTMLデータ属性ガイド

Apr 11, 2025 am 11:50 AM

HTMLデータ属性ガイド

目次

  1. 導入
  2. 文法
  3. データ属性を使用したスタイル
  4. JavaScriptのデータプロパティへのアクセス

導入

HTML要素には、アクセシビリティ情報からスタイル制御まで、あらゆる目的で使用される属性を持つことができます。

<div aria-label="Names" role="region"></div>
ログイン後にコピー

継承されていないアプローチは、独自のプロパティを作成するか、無関係な機能のために既存のプロパティを再利用することです。

<div highlight="true"></div>
<div width="large"></div>
ログイン後にコピー

これを行うには多くの悪い理由があります。あなたのHTMLは無効になり、実際の悪影響はないかもしれませんが、効果的なHTMLの暖かくて曖昧な感覚を失います。最も説得力のある理由は、HTMLが進化する言語であり、今日機能しないプロパティと価値が将来機能しないという意味ではないという理由だけです。

良いニュースは、独自のプロパティを作成できることです。あなたはそれらをdata-*そしてあなたはあなたが望むことを何でもすることができます!

文法

独自のHTML属性を作成し、独自の情報を入力できるようにすることは非常に便利です。幸いなことに、あなたはそれをすることができます!これは、データ属性が使用されるものです。彼らはこのように見えます:

<div data-foo=""></div>
<div data-size="large"></div>
ログイン後にコピー
  • データ属性は、常にこの形式にあるため、 data-*属性と呼ばれることがよくあります。 data言葉、そしてダッシュ- 、そしてあなたが考えることができる他のテキスト。

    データ属性だけを使用できますか?

    <div data=""></div>
    ログイン後にコピー

    これは害を引き起こすことはないかもしれませんが、このガイドでカバーするJavaScript APIを取得することはできません。紹介で述べたように、あなたは実際に自分の属性を作成しています。

    データ属性で何をすべきではありませんか

    アクセス可能なコンテンツを保存します。コンテンツをページに表示または読み取る必要がある場合は、データプロパティに配置するだけでなく、コンテンツがHTMLコンテンツのどこかにあることを確認してください。

    <div data-name="Chris Coyier"></div>
    <div>
      クリス・コイヤー
    </div>
    ログイン後にコピー

    隠されたコンテンツに関する詳細情報を以下に示します。

    データ属性を使用したスタイル

    CSSは、属性とその値に基づいてHTML要素を選択できます。

     /*このデータ属性と値を持つ要素を選択します*/
    [data-size = "large"] {
      パディング:2レム;
      フォントサイズ:125%;
    }
    /*要素やクラスなどに制限できます*/
    button [data-type = "download"] {}
    .card [data-pad = "extra"] {}
    ログイン後にコピー

    これは魅力的です。 HTML/CSSのメインスタイルのフックはクラスであり、クラスは優れていますが(中程度の特異性とclassListを介した素敵なJavaScriptメソッドがあります)、要素はそれを持っているか、それを持っていない(基本的にオンまたはオフ)。 data-*属性を使用すると、このターンオン/オフ機能、同じ特異性レベルでその値に基づいて選択する機能を取得できます。

     / *プロパティが存在する場合、選択 */
    [データサイズ] {}
    /*属性に特定の値があるかどうかを選択*/
    [data-state = "open"]、
    [aria-expanded = "true"] {}
    / *「開始...」セレクター。これは「3」または「3.14」などの3で始まる3つの文字に一致することを意味します */
    [data-version^= "3"] {}
    / * "include" valueがどこでも文字列が含まれている場合 */
    [データ - コンパニー*= "Google"] {}
    ログイン後にコピー

    属性セレクターの特異性

    クラスとまったく同じです。通常、特異性は4部構成の値と見なします。

    インラインスタイル、ID、クラス/プロパティ、タグ

    したがって、個々のプロパティセレクターは0、0、1、0です。このようなセレクター:

     div.card [data-foo = "bar"] {}
    ログイン後にコピー

    0、0、2、1になります。 2は、クラス( .card )とプロパティ( [data-foo="bar"] )があり、1はタグ( div )があるためです。

    属性セレクターの特異性は、IDよりも低く、要素/タグよりも高く、クラスと同じです。

    症例と感受性のプロパティ値

    データプロパティの可能性のあるケースの矛盾を修正する必要がある場合、プロパティセレクターはこのためにケースに依存しないバリアントを提供します。

     /*一致します<div data-state="open"></div>
    <div data-state="Open"></div>
    <div data-state="OPEN"></div>
    <div data-state="oPeN"></div>
    */
    [data-state = "open" i] {}
    ログイン後にコピー

    正方形のブラケットセレクターの小文字iです。

    使用データのプロパティを視覚化します

    CSSを使用すると、データ属性の値を抽出し、必要に応じて表示できます。

     /*<div data-emoji="✅"> */
    [data-emoji] ::前{
      コンテンツ:attr(data-emoji); / * return '✅' */
      マージン右:5px;
    }<h4 id="スタイル使用の例">スタイル使用の例</h4>
    <p>データ属性を使用して、グリッドコンテナに必要な列の数を指定できます。</p>
    <pre class="brush:php;toolbar:false"><div data-columns="2"></div>
    <div data-columns="3"></div>
    <div data-columns="4"></div>
    ログイン後にコピー

    JavaScriptのデータプロパティへのアクセス

    他の属性と同様に、Common Method getAttribute使用して値にアクセスできます。

     let value = el.getattribute( "data-state");
    //値を設定することもできます。
    // data-state = "collapsed"を返す
    el.setattribute( "data-state"、 "collapsed");
    ログイン後にコピー

    しかし、データ属性には独自の特別なAPIもあります。複数のデータ属性を持つ要素があるとします(これは絶対に問題ありません):

    要素に参照がある場合、次のようなプロパティを設定して取得できます。

     // span.dataset.infoを取得します。 // 123
    span.dataset.index; // 2
    // span.dataset.prefix = "mr."を設定します。
    span.dataset.emojiicon = "?";
    ログイン後にコピー

    最後の行のラクダの命名法に注意してください。 HTMLのKebabスタイルの属性( data-this-little-piggyなど)をJavaScript( dataThisLittlePiggyなど)のCamel命名法に自動的に変換します。

    このAPIは間違いなくclassListほど良くありません。クラスリストclassList 、追加、削除、切り替え、交換の明確な方法がありますが、何よりも優れています。

    インラインデータセットにアクセスすることもできます。

    データプロパティのJSONデータ

    ログイン後にコピー

    なぜだめですか?これは、有効なJSONにフォーマットできる文字列です(引用符などに注意してください)。データを抽出し、必要に応じて解析できます。

     const el = document.queryselector( "li");
    let json = el.dataset.person;
    let data = json.parse(json);
    console.log(data.name); // Chris Coyier
    console.log(data.job); // webパーソン
    ログイン後にコピー

    JavaScriptユースケース

    概念は、データプロパティを使用して情報をHTMLに入力できることです。これは、特定の操作を実行するためにJavaScriptにアクセスする必要がある場合があります。

    一般的な例は、データベース機能に関連しています。 「いいね」ボタンがあるとします。

    このボタンは、クリックしたときにサーバーにAjax要求を実行するハンドラーをクリックできます。データプロパティから取得するため、どのレコードを更新するかを知っています。

    仕様

    • セレクターレベル4(ワーキングドラフト)
    • セレクターレベル3(推奨)
    • セレクターレベル2、リビジョン1(初期定義)

    ブラウザのサポート

    このブラウザは、Caniuseのデータをサポートしています。これには詳細が含まれています。番号は、このバージョンでブラウザがこの機能をサポートしていることを示しています。

    デスクトップ

    モバイル/タブレットPC

  • 以上がHTMLデータ属性ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

    先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

    Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

    Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

    HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 Apr 11, 2025 am 11:29 AM

    プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

    HTMLデータ属性ガイド HTMLデータ属性ガイド Apr 11, 2025 am 11:50 AM

    HTML、CSS、およびJavaScriptのデータ属性について知りたいと思っていたことはすべて。

    CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? Apr 05, 2025 pm 11:24 PM

    要素の数が固定されていない場合、CSSを介して指定されたクラス名の最初の子要素を選択する方法。 HTML構造を処理するとき、あなたはしばしば異なる要素に遭遇します...

    フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

    フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

    SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

    新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

    See all articles