HTML5新增标签

新增的结构元素:

一个普通的页面,会有头部,导航,文章内容,还有附着的右边栏,还有底部等模块,而我们是通过class进行区分,并通过不同的css样式来处理的。但相对来说class不是通用的标准的规范,搜索引擎只能去猜测某部分的功能,另外就是此页面程序交给视力障碍人士来阅读的话,文档结构和内容也不会很清晰。而HTML5新标签带来的新的布局则是下面这种情况:(简约版)

html5 标准结构_ruby

相关的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标签设计的界面。