我打开了devdocs.io的源代码并看到了这一行:
<button type="button" aria-label="Back" class="_header-btn" data-back hidden>
我已经阅读了带有data
前缀的自定义HTML属性,但我对此处的使用感到困惑。首先,data-back
属性没有任何值。其次,我完全不理解hidden
的事情。这背后的原因是什么?
答案 0 :(得分:2)
每当您在网络上遇到某些内容并且您无法理解它是如何工作的时候,如果您在未经过任何研究的情况下询问它,那么您的问题将会吸引掉投票,并且不太可能提供高质量的答案。这是正常的,如果你想一想......而不是(重新)搜索自己,你要求别人为你做。随之而来......
HTML允许在任何标准或自定义标记上声明任何属性,除了已经是规范的一部分。除名称冲突和命名标准外,没有限制。
这是命名属性的the spec。
JavaScript和CSS都可以根据属性名称和值添加功能或更改DOM元素的显示规则和/或行为。
除此之外,某些库(例如jQuery)已经定义了方法来方便地获取/设置DOM元素的属性,只要它们遵循一些基本的命名模式。其中最常用的是data-*
$.data()是一个jQuery的方法集合,旨在...
存储与匹配元素关联的任意数据,或者在指定数据存储中返回匹配元素集中第一个元素的值。
其他库使用某些命名模式为DOM元素添加额外的功能和逻辑(即:ng-*
用于AngularJS)。 Angular(v2及更高版本)中使用的另一个有趣的命名模式是[prop]=""
模式,它允许用户直接将值绑定到与标记关联的DOM对象的JavaScript属性。
例如,
<span [style]="{color:'red'}">I'd be red in Angular 2+</span>
...将使与style.color
关联的DOM元素的<span>
属性具有值"red"
,其行为与style="color:red;"
相似但访问DOM元素的JavaScript属性直接,其中很酷的部分是[prop]=""
中的引号之间的任何内容都被Angular评估为JavaScript,并且评估的结果被映射到DOM元素的相应属性。
根据您的具体代码:
<button type="button" aria-label="Back" class="_header-btn" data-back hidden>
...,data-back
是在标记上声明的自定义空属性。定义属性足够时使用空属性,不需要value
。这一切都在上面链接的规范中。
hidden
是标准属性。
总之,在使用HTML时,属性是一个非常强大的工具,因为它允许开发人员向标准或自定义标记添加自定义功能和行为。