HTML5新增标签
新增的结构元素:
一个普通的页面,会有头部,导航,文章内容,还有附着的右边栏,还有底部等模块,而我们是通过class进行区分,并通过不同的css样式来处理的。但相对来说class不是通用的标准的规范,搜索引擎只能去猜测某部分的功能,另外就是此页面程序交给视力障碍人士来阅读的话,文档结构和内容也不会很清晰。而HTML5新标签带来的新的布局则是下面这种情况:(简约版)
相关的HTML代码是:
<body> <header>...</header> <nav>...</nav> <article> <section>...</section> </article> <aside>...</aside> <footer>...</footer> </body>
●section:<section> 标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。
●article:<article> 标签规定独立的自包含内容。
一篇文章应有其自身的意义,应该有可能独立于站点的其余部分对其进行分发。
<article> 元素的潜在来源:论坛帖子、报纸文章、博客条目、用户评论。
●aside:<aside>标签表示article标签内容之外的、与article标签内容相关的辅助信息。
<aside>的内容可用作文章的侧栏。
●header:<header> 标签定义文档的页眉(介绍信息)。
●hgroup:<hgroup> 标签用于对网页或区段(section)的标题元素(h1-h6)进行组合。
●footer:<footer>标签表示整个页面或页面中一个内容区块的脚注,一般来说,它包含创作者的姓名、创作日期以及创作者的联系信息。
提示:<footer> 元素内的联系信息应该位于<address> 标签中。
●figure:<figure>标签规定独立的流内容(图像、图表、代码等等)。
figure元素的内容应该与主内容相关,但如果被删除,则不应对文档流产生影响。
●figcaption:<figcaption> 标签定义 figure元素的标题(caption)。
"figcaption" 元素应该被置于 "figure" 元素的第一个或最后一个子元素的位置。
新增的媒体元素:
●video:<video> 标签定义视频,比如电影片段或其他视频流。
●audio:<audio> 标签定义声音,比如音乐或其他音频流。
●enbed:<embed> 标签定义嵌入的内容,比如插件。
新增的表单控件标签:
●email:必须输入email
●url:必须输入url地址
●number:必须输入数值
●range:必须输入一定范围内数值
●Date Pickers(日期选择器):拥有多个可供选取日期和时间的新输入类型:date-选取日、月、年 month-选取月、年 week-选取周和年 time-选取时间(小时和分钟) datetime-选取时间、日、月、年(UTC时间) datetime-local - 选取时间、日、月、年(本地时间)
●search:用于搜索域,域显示为常规的文本域。
●color:颜色选择器。
新增的其它:
●mark:<mark> 标签定义带有记号的文本。请在需要突出显示文本时使用 <m> 标签。
●progress:<progress> 标签标示任务的进度(进程)。ep:<progress value="22" max="100"></progress>
●ruby:<ruby> 标签定义 ruby 注释(中文注音或字符)。ruby 元素由一个或多个字符(需要一个解释/发音)和一个提供该信息的 rt 元素组成,还包括可选的 rp 元素,定义当浏览器不支持 "ruby" 元素时显示的内容。
●wbr:Word Break Opportunity (<wbr>) 规定在文本中的何处适合添加换行符。
●canvas:<canvas> 标签定义图形,比如图表和其他图像。
<canvas> 标签只是图形容器,您必须使用脚本来绘制图形。
●details:<details> 标签用于描述文档或文档某个部分的细节。
目前只有 Chrome 和 Safari 6 支持 <details> 标签。
●datalist:<datalist> 标签定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。
datalist 及其选项不会被显示出来,它仅仅是合法的输入值列表。
请使用 input 元素的 list 属性来绑定 datalist。
所有主流浏览器都支持 <datalist> 标签,除了 Internet Explorer 和 Safari。
●keygen:<keygen> 标签规定用于表单的密钥对生成器字段。
当提交表单时,私钥存储在本地,公钥发送到服务器。
●output:<output> 标签定义不同类型的输出,比如脚本的输出。
HTML5被删除的元素:
●能被css代替的标签:basefont、big、center、font、s、strike、tt、u。这些标签纯粹是为画面展示服务的,HTML5中提倡把画面展示性功能放在css中统一编辑。
●不再使用frame框架,HTML5不再支持,只支持iframe框架。
●只有部分浏览器支持的标签:applet、bgsound、blink、marquee等标签。
●其它被废除的标签:废除rb,使用ruby替代;
废除acronym使用abbr替代;
废除dir使用ul替代;
废除isindex使用form与input相结合的方式替代;
废除listing使用pre替代;
废除xmp使用code替代;
废除nextid使用guids;
废除plaintex使用“text/plian”(无格式正文)MIME类型替代。
HTML5全局属性
●data-*:使用 data-* 属性来嵌入自定义数据。
data-* 属性用于存储页面或应用程序的私有自定义数据。
data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。
存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。
属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符,属性值可以是任意字符串。
●hidden:如果设置该属性,它规定元素仍未或不再相关。浏览器不应显示已规定 hidden 属性的元素。hidden 属性也可用于防止用户查看元素,直到匹配某些条件(比如选择了某个复选框)。然后,JavaScript 可以删除 hidden 属性,以使此元素可见。
●spellcheck:spellcheck 属性规定是否对元素进行拼写和语法检查。
可以对以下内容进行拼写检查:input 元素中的文本值(非密码)、<textarea> 元素中的文本、可编辑元素中的文本。
●tabindex:tabindex 属性规定元素的 tab 键控制次序(当 tab 键用于导航时)。
以下元素支持 tabindex 属性:<a>, <area>, <button>, <input>, <object>, <select> 以及 <textarea>。
●contenteditable:contenteditable 属性规定元素内容是否可编辑。
如果元素未设置 contenteditable 属性,那么元素会从其父元素继承该属性。
IE(IE6/IE7/IE8)不兼容HTML5标签的解决方法
原理:创建对应名称的Html5标签,这样IE浏览器就能认识H5新标签了。
方法一:Coding JavaScript (必须放在head中)
1 <!--[if lt IE9]>
2 <script>
3 (function() {
4 if (!
5 /*@cc_on!@*/
6 0) return;
7 var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', ');
8 var i= e.length;
9 while (i--){
10 document.createElement(e[i])
11 }
12 })()
13 </script>
14 <![endif]-->
方法二:使用Google的html5shiv包(推荐)
<!--[if lt IE9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
由于国内google的服务器访问卡,建议调用国内的cdn
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->
但是不管使用以上哪种方法,都要初始化新标签的CSS.因为HTML5在默认情况下表现为内联元素,对这些元素进行布局我们需要利用CSS手工把它们转为块状元素方便布局
/*html5*/ article,aside,dialog,footer,header,section,footer,nav,figure,menu{display:block}
但是如果ie6/7/8 禁用脚本的用户,那么就变成了无样式的"白板"网页,我们该怎么解决呢?
我们可以参照facebook的做法,即引导用户进入带有noscript标识的 “/?_fb_noscript=1”页面,用 html4 标签替换 html5 标签,这要比为了保持兼容性而写大量 hack 的做法更轻便一些。
<!--[if lte IE 8]>
<noscript>
<style>.html5-wrappers{display:none!important;}</style>
<div class="ie-noscript-warning">您的浏览器禁用了脚本,请<a href="">查看这里</a>来启用脚本!或者<a href="/?noscript=1">继续访问</a>.
</div>
</noscript>
<![endif]-->
这样可以引导用户开启脚本,或者直接跳转到HTML4标签设计的界面。