浅谈h5的新属性(data-*属性)
来源:互联网 发布:2017年春运数据 编辑:程序博客网 时间:2024/05/29 19:50
HTML5和上一个版本HTML4.01的最大最本质的一个区别点就在于,HTML4.01是基于SGML的,所以<!DOCTYPE>标签需要声明引用DTD,DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。而HTML5是不基于SGML的,所以不需要引用DTD。
在HTML4.01中,DTD有三种声明方法,分别是Strict、Transitional和Frameset。与它们三个相对应的<!DOCTYPE>如下:
1.HTML4.01 Strict,不允许使用表现性、废弃元素(如font)和框架集(如frameset)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">2.HTML4.01 Transitional,允许使用表现性和废弃元素,不允许使用框架集
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">3.HTML4.01 Frameset,允许使用表现性、废弃元素和框架集
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">但是在HTML5中,只有一种<!DOCTYPE>声明方式,如下所示:
<!DOCTYPE html>
除了上面讲的最基本的不同外,在HTML5,允许4种不同的属性语法:
除此以外,HTML5还删除了很多HTML4.01的元素并且加了很多HTML5的新元素。删除的元素有:<acronym>、<applet>、<basefont>、<big>、<center>、<dir>、<font>、<frame>、<frameset>、<noframes>、<strike>、<tt>。增加了这些新元素:<article>、<address>、<applet>、<bdi>、<canvas>、<command>、<datalist>、<details>、<dialog>、<embed>、<figcaption>、<figure>、<footer>、<header>、<keygen>、<mark>、<meter>、<nav>、<output>、<progress>、<rp>、<rt>、<ruby>、<section>、<source>、<summary>、<time>、<track>、<video>、<wbr>,值得注意的是,有一些新的HTML5元素目前为止各大浏览器都不支持,所以在用的时候最好就用一些已经成熟的元素,那些不成熟的最好还是通过js来实现。
除此以外,HTML5还多了很多新属性,由于属性太多,这里就不列了,这里只介绍比较有用的属性:data-*属性。
这个data-*是可以用来存储数据的,data-的后面紧跟自己起的一个变量名,然后后面赋予一个值,这个值就会被存储起来。然后获取数据通过js来实现,如:
<!DOCTYPE html><html><head><meta charset='utf-8'><title></title></head><body><div id='a' data-ha='aaa'>a</div><div id='b' data-ha-ha='bbb'>b</div></body><script type="text/javascript">function ha(){var a = document.getElementById('a')var b = document.getElementById('b')console.log(a.dataset.ha)console.log(b.dataset.haHa)}ha()</script></html>在这里,可以发现第一个div的data-后面只有一个变量名,而第二个div后面却又多加了一个,所以在利用dataset方法的时候,后面的属性名应该用驼峰命名法。这个dataset()方法除了可以获取数据外,还可以添加新的data-*,如:
<!DOCTYPE html><html><head><meta charset='utf-8'><title></title></head><body><div id='c'>c</div></body><script type="text/javascript">function ha(){var c = document.getElementById('c')c.dataset.he = 'ccc'console.log(c.dataset.he)}ha()</script></html>这个在控制台里面可以清楚的看到div里面多了一个data-he属性。如果说有一些低级的浏览器不支持data-*属性的话,那么我们怎么样才能实现我们的这个做法呢?方法很简单,就是通过getAttribute和setAttribute来实现。如:
<!DOCTYPE html><html><head><meta charset='utf-8'><title></title></head><body><div id='d'>d</div></body><script type="text/javascript">function ha(){var d = document.getElementById('d')d.setAttribute('data-d', 'ddd')console.log(d.getAttribute('data-d'))}ha()</script></html>幸运的是,目前所有的主流的浏览器都支持这个新属性,下面是MDN的一个data-*属性所支持的浏览器:
亲测ie11可以接受,其他ie版本就暂时未知。
当然,现在只是聊的是h5的新属性,对h5用的最多的画布、svg、音频视频还有api还没聊到,我会在下篇文章继续聊这些新东西。具体更多HTML5新的属性和元素,请参考这文:HTMl5新元素
本文参考:HTML元素参考 data-*属性功能一览 data-*详细教程 <!DOCTYPE>标签
- 浅谈h5的新属性(data-*属性)
- H5的新属性contenteditable
- 浅谈HTML5的新特性——data-*自定义属性
- H5里面的data属性介绍
- H5新表单属性
- H5 新属性
- h5新属性postmessage
- H5:新增data-*属性详解
- jq获取h5的自定义data-属性的问题
- H5的canvas属性
- H5表格的属性
- h5的form属性
- H5的动画属性
- H5自身的属性
- H5新属性audio音频和 video视频的控制详解(controls)
- html5新属性data api
- H5学习之旅-H5的元素属性(3)
- h5 新标签 ——LBS 属性
- POJ 3411 Paid Roads(dfs技巧)
- 一个97年的IT人创业历程中的总结和感悟
- 扩容swap
- 用面向对象的方法增强测试驱动开发
- jQuery 简单总结
- 浅谈h5的新属性(data-*属性)
- Codeforces Round #409 Div2题解
- 10、linux 统计当前文件夹下的文件、目录个数
- 安卓开发-基本UI的设计使用
- Spark完全分布式搭建过程
- 同一进程的线程共享的资源和独有的资源
- 左旋转字符串
- WPS 规划求解
- Jenkins和Docker在HULK的落地实践