H5语义化标签

HTML标准是这样写的:

The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content, typically with a heading.

Examples of sections would be chapters, the various tabbed pages in a tabbed dialog box, or the numbered sections of a thesis. A Web site’s home page could be split into sections for an introduction, news items, and contact information.

Note: Authors are encouraged to use the article element instead of the section element when it would make sense to syndicate the contents of the element.

Note: The section element is not a generic container element. When an element is needed only for styling purposes or as a convenience for scripting, authors are encouraged to use the div element instead. A general rule is that the section element is appropriate only if the element’s contents would be listed explicitly in the document’s outline.

意译如下(【】里面是我的注解):

section元素表示文档或应用的一个部分。所谓“部分”,这里是指按照主题分组的内容区域,通常会带有标题。【也就是每个section对应不同的主题。注意是内容本身的主题,而不是其他人为设定的划分标准。】

section的例子包括书的章节回目、多tab对话框的每个tab页、论文以数字编号的小节。网站的主页可能分成介绍、最新内容、联系信息等section。

注意:网页作者应使用article而不是section元素,如果其内容是用于聚合(syndicate)。【比如blog首页上的每篇blog。又如论坛帖子的一楼、二楼、三楼……n楼。通常这样的每部分内容形式上是类似的,但是来源是独立的。】

也就是说,一般情况下作为元素容器,使用div而不是section,那么section就没有用了吗?图样图森破。 
这种情况下使用section就比div要好 
section,顾名思义就是一个章节,比如:

<section>
<h1>WWF</h1>
<p>The World Wide Fund for Nature (WWF) is....</p>
</section>
  • 1
  • 2
  • 3
  • 4

至于为什么要用,是为了语义化,有section、article、dl看这多舒服,人也好理解,计算机也好理解,比满眼的div好多了。

div  section  和article

<section></section>用于对网站或应用程序中页面上的内容进行分块。通常由内容及其标题组成。

<article></article>代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容。当我们描述一件具体的事物的时候,通常使用article来代替section。如一个帖子,一段用户评论等。

<aside></aside>表示当前页面或者文章的附属信息部分。如与当前页面或主要内容相关的引用、侧边栏、广告、nav元素组等。

<nav></nav>用作页面导航的链接组,其中可以包括<ul><li><p>元素等。

<time></time>表示某个时间或者某个日期。其中pubdate属性代表了文档的发布日期,可以用到time标签里。

<header></header>整个页面或者页面内容区块的标题,可以包含其他内容。

<footer></footer>页脚,页面底部或者版块的内容。

<hgroup></hgroup>页面上标题的组合,通常对h1~h6进行分组。

<address></address>文档作者或者文档维护者的联系信息。

<figure></figure>通常用于图片,统计图或代码示例,带有可选标题。将其从网页上移除后不会对网页上其他内容产生影响。

<figcaption></figcaption>表示figure的标题,从属于figure元素。

<mark></mark>页面中需要凸显出或者高亮显示的,对于当前用户具有参考作用的一段文字。

<progress></progress>代表一个任务完成的进度。

<details></details>描述文档或者用户要求得到并且可以得到的细节信息。与summary元素配合使用。

<summary></summary>给details元素提供标题或者图例。标题是可见的,用户点击标题时,会显示细节信息。

<datelist></datelist>选项列表。与input元素配合使用,来定义input可能的值。

<keygen></keygen>给表单添加一个公钥.

<menu></menu>菜单列表。HTML4中不推荐使用。


从开发的角度,语义化标签提高开发的易读性和可维护性,网站的发布者:有利于seo优化,但是语义化标签有兼容问题

在IE9以上包括ie9  支持H5和css3  但是IE9以下基本不支持H5和CSS3,i9以下不认识H5的标签,会将语义化标签默认会看成行内元素(可以测试下),所以行内元素不能设置宽高属性等, 所以语义化标签需要动态设置  在js里面可以设置  比如

var a = document.creatElement("section");并且需要设置成块级元素


但是在js中需要大量的代码实现这个兼容性,所以我们用一个插件解决这个问题

这个插件就是html5shiv.js  这个插件能完成这个问题  需要将这个js必须引入在头部,用于提前解析h5标签,但是在支持h5语义标签的不需要加载 ,但是在ie9以下要加载,这里需要优化以下:

在js中可以获取浏览器信息   navigator.useragent  这个可以获取浏览器版本,但是这个不能是html5shiv.js做提前加载

所以需要用条件注释,在css中有普通的注释,还有一种是条件注释

条件注释可以在网页的任何地方,这里加载兼容js需要放在网页的头部,根据浏览器版本加载html

 <!--[if !IE]> <-->
    <script src="/assets/js/jquery-3.2.0.min.js" type="text/javascript"></script>
    <!--> <![endif]-->

格式是固定  下面这个lt是小于的意思   gt 是大于   lte小于等于  gte大于等于

 <!--[if lt IE 9]> <-->
    <script src="/assets/js/jquery-3.2.0.min.js" type="text/javascript"></script>
    <!--> <![endif]-->
从各个地方搜集的信息加上自己的理解  仅供大家参考,有问题可以留言及时改正




猜你喜欢

转载自blog.csdn.net/woyuanliulian/article/details/80878025