HTML5自定义数据属性让开发者能够在HTML元素中存储自定义数据。它们提供了一种向HTML元素添加额外信息的方法,这些信息可被JavaScript或CSS使用,从而增强网页功能。本文将介绍什么是数据属性以及它们的用途。
关键要点
- HTML5自定义数据属性允许开发者在HTML元素上存储额外信息,这些信息可以被JavaScript或CSS访问和使用,从而增强网页功能。
- 数据属性总是以“data-”开头,可用于通过属性选择器在CSS中设置元素样式,并可通过
attr()
函数向用户显示信息。 - 在JavaScript中,可以使用
getAttribute()
和setAttribute()
方法、dataset
属性或jQuery的data()
方法访问数据属性。 - 虽然自定义数据属性功能强大,但只有在没有其他合适的HTML元素或属性时才应使用它们,并且不应用于存储大量数据。
为什么要使用自定义数据属性?
我们经常需要存储与不同DOM元素关联的信息。这些信息对于读者来说可能并不重要,但能够轻松访问它们会让我们的开发工作变得轻松许多。例如,假设您在一个网页上列出了不同的餐馆。在HTML5之前,如果您想存储餐馆提供的食物类型或它们与访问者的距离等信息,您将使用HTML的class
属性。如果您还需要存储餐厅ID来查看用户想要访问的特定餐厅,该怎么办?以下是基于HTMLclass
属性的方法的一些问题:
- HTML
class
属性并非用于存储此类数据。其主要目的是允许开发者将样式信息分配给一组元素。 - 每添加一条信息,都需要向元素添加一个新的类。这使得在JavaScript中解析数据以获取所需信息变得更加困难。
- 假设给定的类名以数字开头。如果您决定稍后根据类名中的数据设置元素样式,则必须转义数字或在样式表中使用属性选择器。
为了解决这些问题,HTML5引入了自定义数据属性。所有名称以data-
开头的元素属性都是数据属性。您还可以使用这些数据属性来设置元素样式。接下来,让我们深入了解数据属性的基础知识,并学习如何在CSS和JavaScript中访问它们的值。
HTML语法
如前所述,数据属性的名称将始终以data-
开头。这是一个示例:
<li data-type="veg" data-distance="2miles" data-identifier="10318">Salad King</li>
您现在可以使用这些数据属性来搜索和排序访客的餐厅。例如,您现在可以向他们显示一定距离内所有的素食餐厅。除了data-
前缀外,有效的自定义数据属性的名称只能包含字母、数字、连字符(-)、点(.)、冒号(:)或下划线(_)。它不能包含大写字母。使用数据属性时,您需要注意两点。首先,存储在这些属性中的数据应为字符串类型。任何可以进行字符串编码的内容也可以存储在数据属性中。所有类型转换都需要在JavaScript中完成。其次,只有在没有其他合适的HTML元素或属性时,才应使用数据属性。例如,将元素的类存储在data-class
属性中是不合适的。一个元素可以拥有任意数量的数据属性,以及您想要的任意值。
数据属性和CSS
您可以使用属性选择器在CSS中使用数据属性来设置元素样式。您还可以使用attr()
函数向用户显示存储在数据属性中的信息(在工具提示或其他方式中)。
设置元素样式
回到我们的餐厅示例,您可以使用属性选择器以不同的方式设置餐厅的背景,从而向用户提示餐厅的类型或它们与用户的距离。这是一个示例:
li[data-type='veg'] { background: #8BC34A; } li[data-type='french'] { background: #3F51B5; }
创建工具提示
您可以使用工具提示向用户显示与元素相关的其他信息。我建议您将此方法用于快速原型,而不是生产网站,原因至少是仅限CSS的工具提示并非完全可访问。您想要显示的信息可以存储在data-tooltip
属性中。
<span data-tooltip="简单的解释">Word</span>
然后,您可以使用::before
伪元素向用户呈现数据。
span::before { content: attr(data-tooltip); //更多样式规则 } span:hover::before { display: inline-block; }
使用JavaScript访问数据属性
在JavaScript中访问数据属性有三种方法。
使用getAttribute
和setAttribute
您可以在JavaScript中使用getAttribute()
和setAttribute()
来获取和设置不同数据属性的值。如果给定的属性不存在,则getAttribute
方法将返回null
或空字符串。以下是如何使用这些方法的示例:
let restaurant = document.getElementById("restaurantId"); let ratings = restaurant.getAttribute("data-ratings");
您可以使用setAttribute
方法修改现有属性的值或添加新属性。
restaurant.setAttribute("data-owner-name", "someName");
使用dataset
属性
访问数据属性的一种更简单的方法是使用dataset
属性。此属性返回一个DOMStringMap
对象,其中包含每个自定义数据属性的一个条目。使用dataset
属性时,您需要注意一些事项。它需要三个步骤才能将自定义数据属性转换为DOMStringMap
键:
- 从属性名称中删除
data-
前缀 - 从名称中删除任何后跟小写字母的连字符,并将后面的字母转换为大写
- 其他字符将保持不变。这意味着任何后跟小写字母的连字符也将保持不变。
然后可以使用存储在对象中的驼峰式名称作为键来访问属性,例如element.dataset.keyname
。访问属性的另一种方法是使用方括号表示法,例如element.dataset[keyname]
。考虑以下HTML:
<li data-type="veg" data-distance="2miles" data-identifier="10318">Salad King</li>
以下是一些示例:
li[data-type='veg'] { background: #8BC34A; } li[data-type='french'] { background: #3F51B5; }
此方法现在已在所有主要浏览器中受支持,您应该优先使用它来访问自定义数据属性。
使用jQuery
您还可以使用jQuery的data()
方法访问元素的数据属性。在jQuery 1.6版本之前,您必须使用以下代码访问数据属性:
<span data-tooltip="简单的解释">Word</span>
从1.6版本开始,jQuery开始使用数据属性的驼峰式版本。现在,您可以使用以下代码执行相同的操作:
span::before { content: attr(data-tooltip); //更多样式规则 } span:hover::before { display: inline-block; }
您应该知道,jQuery还会尝试在内部将从数据属性获得的字符串转换为合适的类型,例如数字、布尔值、对象、数组和null
。
let restaurant = document.getElementById("restaurantId"); let ratings = restaurant.getAttribute("data-ratings");
如果您希望jQuery将从数据属性获得的值作为字符串获取,而无需尝试将其转换为其他类型,则应使用jQuery的attr()
方法。jQuery仅在第一次访问数据属性时才检索其值。然后不再访问或更改数据属性。您对这些属性所做的所有更改都在内部进行,并且只能在jQuery中访问。假设您正在操作以下列表项的数据属性:
restaurant.setAttribute("data-owner-name", "someName");
您可以使用以下代码更改其data-distance
属性的值:
<li data-type="veg" data-distance="2miles" data-identifier="10318" data-owner-name="someName">Salad King</li>
如您所见,使用原生JavaScript(非jQuery)访问data-distance
属性的值仍然会提供旧的结果。
结论
在本教程中,我已经介绍了关于HTML5数据属性的所有重要内容。除了使用属性选择器创建工具提示和设置元素样式外,您还可以使用数据属性来存储和向用户显示其他数据,例如有关未读消息的通知等等。
(此处应添加常见问题解答部分,内容与输入文本中的FAQ部分一致,但语言表达可以更精炼一些。为了避免重复,我省略了这部分内容。)
以上是如何使用HTML5自定义数据属性以及为什么的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

Python和JavaScript在性能和效率方面的差异主要体现在:1)Python作为解释型语言,运行速度较慢,但开发效率高,适合快速原型开发;2)JavaScript在浏览器中受限于单线程,但在Node.js中可利用多线程和异步I/O提升性能,两者在实际项目中各有优势。

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

JavaScript在浏览器和Node.js环境中运行,依赖JavaScript引擎解析和执行代码。1)解析阶段生成抽象语法树(AST);2)编译阶段将AST转换为字节码或机器码;3)执行阶段执行编译后的代码。

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

记事本++7.3.1
好用且免费的代码编辑器