HTML data-*属性

HTML data-* 语法

在 HTML 中,data-* 用于实现元素的自定义属性,它允许我们在所有 HTML 元素上嵌入自定义数据,然后提供给 JavaScript 进行操作。

语法:

<element data-*="取值" >

说明:

“data-” 只是一个前缀,它后面接的是一个小写的字符串,例如 data-color、data-article-title 等。data-* 属性的值可以是任何字符串。

在使用 data-* 属性时,要特别注意以下 2 点。

  • data-* 属性的名称必须以 “data-” 前缀开头。
  • 除了 “data-” 的其余部分可以包含字母、数字、中划线和下划线,但不能包含空格或其他特殊字符。

HTML data-* 摘要

属于 HTML 属性
使用频率
兼容性 查看
官方文档 查看
MDN 查看

HTML data-* 示例

接下来,我们通过几个简单的例子来讲解一下 HTML data-* 属性是如何使用的。

示例 1:data-* 属性的基本用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <p data-color="red">你的努力程度之低,根本轮不到拼天赋。</p>
    <script>
        const oP = document.getElementsByTagName("p")[0];
        oP.style.color = oP.dataset.color;
    </script>
</body>
</html>

页面效果如下图所示。

HTML data-*属性的基本使用

分析:

我们可以使用 DOM 操作中的 obj.dataset.xxx 来获取 data-* 属性的值。其中,obj 是一个 DOM 对象,xxx 是 “data-” 的后缀字符串。可能有些小伙伴对具体操作还不是很理解,我们再多举一个例子。

示例 2:data-* 属性的实际应用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <ul>
        <li data-fruit-price="¥6.5">苹果</li>
        <li data-fruit-price="¥12.5">香蕉</li>
        <li data-fruit-price="¥3.5">西瓜</li>
    </ul>
    <script>
        const oLi = document.getElementsByTagName("li");
        for(let i = 0; i < oLi.length; i++) {
            let result = `${oLi[i].innerText}${oLi[i].dataset.fruitPrice}斤`;
            console.log(result);
        }
    </script>
</body>
</html>

页面效果如下图 1 所示,控制台输出如下图 2 所示。

HTML data-*属性示例效果1

HTML data-*属性示例效果2

分析:

在使用 JavaScript 获取 data-* 属性值时,小伙伴们要注意一下书写格式。

  • 如果是 data-xxx 格式,则应该写成 obj.dataset.xxx。例如 data-color 应该写成 obj.dataset.color,而 data-content 应该写成 obj.dataset.content。
  • 如果是 data-xxx-yyy,则应该写成 obj.dataset.xxxYyy。例如 data-fruit-price 应该写成 obj.dataset.fruitPrice,而 data-animal-type 应该写成 obj.dataset.animalType。

示例 3:data-* 属性配合 CSS 使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        li {
            cursor: pointer;
            margin-bottom: 10px;
        }
        /* 默认情况下不显示,只有鼠标悬停时才显示 data-role 的值 */
        li:hover::after {
            content: " — " attr(data-role);    /* 取出属性值,并加个破折号 */
            color: #ff4400;
            font-size: 14px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <ul>
        <li data-role="管理员">张三</li>
        <li data-role="VIP会员">李四</li>
        <li data-role="普通用户">王五</li>
    </ul>
</body>
</html>

默认情况下,页面效果如下图 1 所示。当鼠标移动到元素上时,页面效果如下图 2 所示。

data-* 属性配合 CSS 使用(1)

data-* 属性配合 CSS 使用(2)

分析:

在这个例子中,我们并没有使用任何 JavaScript 代码。通过 CSS 的 attr(data-role) 函数,我们直接获取了 div 元素上 data-role 的属性值,并将其显示在了 ::after 伪元素中。

提示: 使用 data-* 实现的自定义属性在实际项目中用得比较多,比如在使用 Vue 开发的项目中,通过浏览器查看页面源码就可以看到很多 data-xxx 的东西。

上一篇: contenteditable

下一篇: dir

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号