原文:All You Need to Know About the HTML5 Data Attribute

译文:你必须知道HTML 5 的Data属性

译者:dwqs

HTML 5的Data属性可以让你给元素自定义数据。这篇文章就是思考怎么更好的使用Data属性。

介绍

HTML 5之前,我们必须依赖于class和rel属性来存储需要在网站中使用的数据片段,这种做法有时会在网站的外观和实用性之间产生冲突。而HTML 5 Data属性的存在就能很好满足需要。

随着网站自身的数据越来越多,一些特定的元素也开始保存数据了。比如,要创建一个audio应用,代码如下:

<audio controls="controls">
<source src="track1.mp3" type="audio/mpeg" />
</audio>

上面的代码是完全能够接受的,但是有时我们需要保存时长、速度和作者等更多关于音频本身的信息,而不是音频来源。这就需要用到Data属性了,示例如下:

<audio controls="controls">
<source src="track1.mp3" type="audio/mpeg" data-duration="1min5secs" data-tempo="125bpm" data-artist="The Beatles" />
</audio>

通过这些自定义的Data属性,就能够对audio执行搜寻、过滤以及分组等动作。

怎么使用Data属性

自定义的Data属性的名字必须以data-开头,并且连字号后面至少要有一个符合HTML规范的字符。(HTML naming convention.)

W3C文档对Data属性的说明如下:

Custom data attributes are intended to store custom data private to the page or application, for which there are no more appropriate attributes or elements.

这也意味着我们只能在应用程序内部使用data数据,而不应该将它呈现给用户。更重要的是你可以给元素自定义任何数量的Data属性,并赋予任何有意义的值。

什么时候需要使用Data属性?

通过上面的讲述,已经知道怎么使用Data属性了。但为了更好地了解这个属性,再看几个例子。

在Tuts+的Webdesign板块已经有了很好地、关于使用data属性的例子。One of the tuts,将Data属性运用到样式中,让菜单有一个“气泡”通知效果。在这个示例中,data属性被用于只想气泡通知的值。

<a href="#" class="pink" data-bubble="2">Profile</a>

另外一个示例:quick tip,Data属性作为提示信息是怎么被用于提示框的

<a href="#" class="tooltip" data-tip="this is the tip!">This is the link</a>
      什么时候不该用Data属性?
             当元素已经建立或者更适当的属性时,就不应该用Data属性了。在下面这个示例中运用data是不合适的:
<span data-time="20:00">8pm<span>

因为在一个表示时间的元素中,已经有一个datetime属性了:

<time datetime="20:00">8pm</time>

同时,Data属性不应该被用作一个可替代的元数据或者微格式。微格式主要是为人类设计的、用于介绍上下文信息的。比如,如果你有一张关于个人或者某个组 织联系信息的Vcard,你应该赋予一个名为vcard的class属性,让机器明白它包含了一些联系的信息。

利用微格式的代码如下:

<div class="vcard">
<span class="fn " >Aaron Lumsden</span>
</div>

相反,利用Data属性的代码如下:

<div class="vcard">
<span data-name="Aaron Lumsden " >Aaron Lumsden</span>
</div>

了解更多关于微格式的信息:Mircorformats.org.

在CSS中使用Data属性

既然在HTML标记中实现了Data属性,那么也可以在CSS中使用这个属性了。注意:尽管在某些情况下更适合直接使用Data属性,那也不应该对任何样式规则直接使用该属性。简单的使用如下:

[data-role="page"] {
/* Styles */
}

在JQuery中使用Data属性

在JQuery中怎么使用Data属性呢?JQuery提供了很多种从元素获取数据的方式。例如,像下面这样:

<a href="http://www.google.com" class="button" data-info="The worlds most popular search engine">Google</a>

如果有一个和上面类似的锚文本标记,有一个名为data-info的data属性,利用下面的方式,可以获取任何一个属性,包括data-info

$('.button').click(function(e) {
e.preventDefault();
thisdata = $(this).attr('data-info');
console.log(thisdata);
});

原文首发:http://www.ido321.com/1304.html

下一篇:大型网站系统架构演化之路

HTML 5:你必须知道的data属性的更多相关文章

  1. (转)【推荐】初级.NET程序员,你必须知道的EF知识和经验

    转自:http://www.cnblogs.com/zhaopei/p/5721789.html [推荐]初级.NET程序员,你必须知道的EF知识和经验   阅读目录   [本文已下咒.先顶后看,会涨 ...

  2. 《你必须知道的.NET》读书笔记:从Hello World认识IL

    通用的语言基础是.NET运行的基础,当我们对程序运行的结果有异议的时候,如何透过本质看表面,需要我们从底层来入手探索,这时候,IL便是我们必须知道的基础. 一.IL基础概念 1.1 什么是IL? IL ...

  3. [你必须知道的.NET]第三十回:.NET十年(下)

    发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  4. 必须知道的ADO.NET 数据库连接池

    http://www.cnblogs.com/liuhaorain/archive/2012/02/19/2353110.html 题外话 通过前几章的学习,不知道大家对ADO.NET有一定的了解了没 ...

  5. Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor

    Webservice WCF WebApi   注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...

  6. 《你必须知道的.NET》读书笔记一:小OO有大智慧

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.对象  (1)出生:系统首先会在内存中分配一定的存储空间,然后初始化其附加成员,调用构造函数执行初 ...

  7. 《你必须知道的.NET》读书笔记三:体验OO之美

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.依赖也是哲学 (1)本质诠释:“不要调用我们,我们会调用你” (2)依赖和耦合: ①无依赖,无耦合 ...

  8. MVC中你必须知道的13个扩展点

    MVC中你必须知道的13个扩展点 pasting 转:http://www.cnblogs.com/kirinboy/archive/2009/06/01/13-asp-net-mvc-extensi ...

  9. 前端开发必须知道的JS(二) 闭包及应用

    http://www.cnblogs.com/ljchow/archive/2010/07/06/1768749.html 在前端开发必须知道的JS(一) 原型和继承一文中说过下面写篇闭包,加之最近越 ...

随机推荐

  1. XML DOS 攻击

    内容来自此文:http://msdn.microsoft.com/en-us/magazine/ee335713.aspx DoS(Denial of service:拒绝服务)攻击由来已久(1992 ...

  2. Apache 下SVN项目管理使用说明

    Apache 下SVN项目管理使用说明 (1)Apaceh和SVN先要装好. (2)在apache的目录下找到httpd.conf文件,在最后一行增加如下配置 Include conf/svn.pro ...

  3. PCB板的价格是怎么算出来的?

    Part 1 :影响一块PCB板价格的各种因素 PCB的价格是很多采购者一直很困惑的事情,很多人在线下单时也会疑问这些价格是怎么算出来的,下面我们就一起谈论一下PCB价格的组成因素. 1.PCB所用材 ...

  4. 基于QT的换肤整体解决方案(QSkinStyle)(提供Linux的XP风格)

    基于QT的换肤整体解决方案(QSkinStyle) 对QT这个成功的跨平台GUI库,本身内置了对换肤功能的实现,比如cleanlooks.plastique等跨平台风格:还有一些是和平台相关的风格,比 ...

  5. C#基础练习(事件登陆案例)

    Form1的后台代码: namespace _08事件登陆案例 {     public partial class Form1 : Form     {         public Form1() ...

  6. 39. Combination Sum

    题目: Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C  ...

  7. 机器学习 —— 概率图模型(Homework: MCMC)

    除了精确推理之外,我们还有非精确推理的手段来对概率图单个变量的分布进行求解.在很多情况下,概率图无法简化成团树,或者简化成团树后单个团中随机变量数目较多,会导致团树标定的效率低下.以图像分割为例,如果 ...

  8. IO多路复用的几种实现机制的分析

    http://blog.csdn.net/zhang_shuai_2011/article/details/7675797 select,poll,epoll都是IO多路复用的机制.所谓I/O多路复用 ...

  9. i386 和amd64 的意思

    首先可以简化一个概念,i386=Intel 80386.其实i386通常被用来作为对Intel(英特尔)32位微处理器的统称. Windows NT类系统的安装盘上,通常i386是其根上的一个文件夹, ...

  10. Ubuntu下jdk配置

    在Oracle官网下载linux版本的以tar.gz结尾的jdk建立文件夹用来存放解压后的jdksudo mkdir /usr/java进入jdk下载文件夹,解压并存放jdksudo tar zxvf ...