【问题标题】:data-* attributes in HTML5HTML5 中的 data-* 属性
【发布时间】:2018-07-20 07:43:02
【问题描述】:

正在阅读 an article on Mozilla 关于数据属性的信息。文章说您可以使用 data-* 属性来存储有关元素的额外信息。例如:

<article
  id="electriccars"
  data-columns="3"
  data-index-number="12314"
  data-parent="cars">
...
</article>

问题:

他们的唯一目的是向 HTML 元素添加自定义元数据还是有其他用例?

【问题讨论】:

  • 您有什么样的其他用例?他们的目的是允许作者(我们)设置 custom 属性,通常是不允许的(因为 HTMLElements 有关于他们接受哪些属性的规则)。因此,您可以从那里构建您想要的任何用例。
  • 据我了解。这几乎可以弥合差距(或创建他们自己的这样做方式)到 Angular 的做事方式。例如。 ng-model、ng-class、ng-custom。我很快就会发布一个来自 angularjs 的示例
  • 好的,谢谢,答案很明确
  • @Joel 没有空白可以填补,HTML5 working draft of 2010.10.19 包括data-attributes,Angular 的第一个版本是第二天 ;-) 尽管他们直到今天仍在使用无效标记......跨度>

标签: html


【解决方案1】:

一个如何以 Angular 作为框架创建和使用自定义属性的示例(用于演示用例)

HTML:

<button id="monitorBtn-{{machine.id}}">
     <span ng-show="!$ctrl.isMonitored(machine)">
         StackOverFlow
     </span>
</button>

JS:

var element = angular.element("#monitorBtn-"+machine.id);
element.attr("tooltip","Your Tooltip Text"); // <-- setting custom attr
element.attr("flow","up");
console.log(element);

这会将一个属性附加到按钮类,如下所示:

<button id="monitorBtn-{{machine.id}}" tooltip="Your tooltip Text" flow="up" ....>

当然:这个自定义类是用CSS4 生成的。

CSS:

:root {
    --bg: #05a8ff;
    --dink: 7px;
}

[tooltip] {
    position: relative;
}
[tooltip]:not([flow])::after,
[tooltip][flow^="up"]::after {
    bottom: calc(100% + var(--dink));
}

这绝不是问题的答案,我认为这个问题没有真正的答案。它非常广泛,但我将发布这段代码,让您了解 data-* attrs 如何在不同语言中工作的用例,以及 HTML 为何接受它们。

【讨论】:

  • 抱歉吹毛求疵,但没有“CSS4”之类的东西,而且永远不会有 (xanthir.com/b4Ko0)。规范模块的“级别”不是 CSS 语言 的“版本”。选择器级别 4(实际上 not 在您的示例中使用)不是“CSS4”,媒体查询级别 5 (drafts.csswg.org/mediaqueries-5) 不是“CSS5”,自定义属性级别 1(在您的示例中使用)不是“CSS1”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多