HTML5 data-*属性说明

250 阅读2分钟

我渴望能见你一面,
但请你记得,
我不会开口要求见你。
这不是因为骄傲,
你知道我在你面前毫无骄傲可言,
而是因为,
唯有你也想见我的时候,
我们见面才有意义。

    ————《越洋情书》

作用

使用 data-* 属性来嵌入自定义数据,用于储存私有的自定义数据,可以让我们在所有html元素上增加自定义data属性,存储的data属性能被JavaScript调用。

HTML 5 之前,需要使用其他的数据时,是非常糟糕的。为了使一切正常有效,你不得不将数据填充到 rel 或 class 属性。 有些开发者,甚至创建自己的自定义属性。 自从 HTML5 自定义 data 属性出现,你可以存储任意数据,通过一种简单,符合标准的方式。

使用规则

  • 本质:一个保存数据的自定义属性
  • 用法: data-作为前缀,后面跟着描述性的单词(只允许小写字母和连字符-)
  • 一个元素可以有任意多个data属性
  • 属性值不能是对象类型,如果真的想要保存对象,可通过对象序列化
  • dataset API的要求:>IE10
  • 语法:<element data-*="somevalue">

获取和设置data-*属性

实例如下:

<article
    id="foods"
    data-name="apple"
    data-sum-num="10"
    data-parent="fruit"
>
</article>

JavaScript获取方式

通过js有两种方式:

  1. getAttribute
var article = document.querySelector("#foods");

// 一般方式读取和修改值
article.getAttribute("data-name");
article.setAttribute("data-name","orange");
  1. dataset

HTML5 有一个用于与这类型数据的 API,不过IE10 和 低于IE10 并没有完全支持这一特性。 让我们看看如何使用 dataset API 来设置 data 属性的:

// dataset API读取属性值
article.dataset.name     // 获取name值
article.dataset.sumNum   //连字符变成驼峰式
article.dataset.parent

// dataset API设置属性值
article.dataset.name = "banana" // 将名称设置为banana

在使用dataset时,这里没有 data - 前缀或破折号。 你将必须使用驼峰命名法。例如 HTML 使用 data-some-attribute-name,而 JavaScript 中是 dataset.someAttributeName

jQuery获取方式

$("#foods").attr("data-name")
$("#foods").data("name")
$("#foods").data("sumNum")
$("#foods").data("parent")

CSS获取方式

// 获取值
article::before{
    content: attr(data-name);
}

// 改变值
article[data-name="apple"]{
    width="100px;"
}
article[data-name="banana"]{
    width="100px;"
}

参考 www.jianshu.com/p/4d2bcded5…