什么是语义化标签
语义化是前端开发里面的一个专用术语,其优点在于标签语义化有助于构架良好的html结构,有利于搜索引擎的建立索引、抓取;另外,亦有利于页面在不同的设备上显示尽可能相同;此外,亦有利于构建清晰的机构,有利于团队的开发、维护。
通俗而言,就是HTML的结构清晰,该是段落就用p标签,该是页脚就用footer标签,而不要统一都用DIV。
为什么要web语义化
- 有利于搜索
- 容易兼容不同设备
- 结构清晰,利于团队的开发、维护
案例分析
上述某网站一篇博客的HTML结构则运用了语义化标签
h1-h6、article,让阅读代码者一眼就能看出来此处的代码编写的是文章部分,提高了代码的可读性。
假如不使用语义化标签而是全都采用div标签,则让代码变得结构复杂且需花时间去理解阅读
常见的语义化标签
<title>:页面主体内容。<hn>:h1~h6,分级标题,<h1>与<title>协调有利于搜索引擎优化。<ul>:无序列表。<li>:有序列表。<header>:页眉通常包括网站标志、主导航、全站链接以及搜索框。<nav>:标记导航,仅对文档中重要的链接群使用。<main>:页面主要内容,一个页面只能使用一次。如果是web应用,则包围其主要功能。<article>:定义外部的内容,其中的内容独立于文档的其余部分。<section>:定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其- 他部分。<aside>:定义其所处内容之外的内容。如侧栏、文章的一组链接、广告、友情链接、相关产品列表等。<footer>:页脚,只有当父级是body时,才是整个页面的页脚。<small>:呈现小号字体效果,指定细则,输入免责声明、注解、署名、版权。<strong>:和 em 标签一样,用于强调文本,但它强调的程度更强一些。<em>:将其中的文本表示为强调的内容,表现为斜体。<mark>:使用黄色突出显示部分文本。<figure>:规定独立的流内容(图像、图表、照片、代码等等)(默认有40px左右margin)。<figcaption>:定义 figure 元素的标题,应该被置于 figure 元素的第一个或最后一个子元素的位置。<cite>:表示所包含的文本对某个参考文献的引用,比如书籍或者杂志的标题。<blockquoto>:定义块引用,块引用拥有它们自己的空间。<q>:短的引述(跨浏览器问题,尽量避免使用)。<time>:datetime属性遵循特定格式,如果忽略此属性,文本内容必须是合法的日期或者时间格式。<abbr>:简称或缩写。<dfn>:定义术语元素,与定义必须紧挨着,可以在描述列表dl元素中使用。<address>:作者、相关人士或组织的联系信息(电子邮件地址、指向联系信息页的链接)。<del>:移除的内容。<ins>:添加的内容。<code>:标记代码。<meter>:定义已知范围或分数值内的标量测量。(Internet Explorer 不支持 meter 标签)<progress>:定义运行中的进度(进程)。
header元素
header 元素代表“网页”或“section”的页眉。
通常包含h1-h6元素或hgroup,作为整个页面或者一个内容块的标题。也可以包裹一节的目录部分,一个搜索框,一个nav,或者任何相关logo。
整个页面没有限制header元素的个数,可以拥有多个,可以为每个内容块增加一个header元素
css
复制代码
<header>
<hgroup>
<h1>网站标题</h1>
<h1>网站副标题</h1>
</hgroup>
</header>
header使用注意:
- 可以是“网页”或任意“section”的头部部分;
- 没有个数限制。
- 如果hgroup或h1-h6自己就能工作的很好,那就不要用header。
footer元素
footer元素代表“网页”或“section”的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。如果footer元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似信息。
less
复制代码
<footer>
COPYRIGHT@小北
</footer>
footer使用注意:
- 可以是“网页”或任意“section”的底部部分;
- 没有个数限制,除了包裹的内容不一样,其他跟header类似。
hgroup元素
hgroup元素代表“网页”或“section”的标题,当元素有多个层级时,该元素可以将h1到h6元素放在其内,譬如文章的主标题和副标题的组合
css
复制代码
<hgroup>
<h1>这是一篇介绍HTML 5语义化标签和更简洁的结构</h1>
<h2>HTML 5</h2>
</hgroup>
hgroup使用注意:
- 如果只需要一个h1-h6标签就不用hgroup
- 如果有连续多个h1-h6标签就用hgroup
- 如果有连续多个标题和其他文章数据,h1-h6标签就用hgroup包住,和其他文章元数据一起放入header标签
nav元素
nav元素代表页面的导航链接区域。用于定义页面的主要导航部分。
css
复制代码
<nav>
<ul>
<li>HTML 5</li>
<li>CSS3</li>
<li>JavaScript</li>
</ul>
</nav>
nav使用注意:
- 用在整个页面主要导航部分上,不合适就不要用nav元素;
aside元素
aside元素被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等。(特殊的section)
在article元素之外使用作为页面或站点全局的附属信息部分。最典型的是侧边栏,其中的内容可以是日志串连,其他组的导航,甚至广告,这些内容相关的页面。
css
复制代码
<article>
<p>内容</p>
<aside>
<h1>作者简介</h1>
<p>小北,前端一枚</p>
</aside>
</article>
aside使用注意:
- aside在article内表示主要内容的附属信息,
- 在article之外则可做侧边栏,没有article与之对应,最好不用。
- 如果是广告,其他日志链接或者其他分类导航也可以用
section元素
section元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照主题的分段;“节”可以是指一个页面里的分组。
section通常还带标题,虽然html5中section会自动给标题h1-h6降级,但是最好手动给他们降级。如下:
css
复制代码
<section>
<h1>section是啥?</h1>
<article>
<h2>关于section</h1>
<p>section的介绍</p>
<section>
<h3>关于其他</h3>
<p>关于其他section的介绍</p>
</section>
</article>
</section>
section使用注意:
一张页面可以用section划分为简介、文章条目和联系信息。不过在文章内页,最好用article。section不是一般意义上的容器元素,如果想作为样式展示和脚本的便利,可以用div。
- 表示文档中的节或者段;
- article、nav、aside可以理解为特殊的section,所以如果可以用article、nav、aside就不要用section,没实际意义的就用div
article元素
article元素最容易跟section和div容易混淆,其实article代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。譬如论坛的帖子,博客上的文章,一篇用户的评论,一个互动的widget小工具。(特殊的section)
除了它的内容,article会有一个标题(通常会在header里),会有一个footer页脚。
xml
复制代码
<article>
<h1>一篇文章</h1>
<p>文章内容..</p>
<footer>
<p><small>版权:html5jscss网所属,作者:小北</small></p>
</footer>
</article>
article使用注意:
- 自身独立的情况下:用article
- 是相关内容:用section
- 没有语义的:用div
注意事项
- 尽可能少的使用无语义的标签div和span
- 在语义不明显时,既可以使用div或者p时,尽量用p,因为p在默认情况下有上下间距,对兼容特殊终端有利
- 不要使用纯样式标签,如:b、font、u等,改用CSS设置
- 需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用css指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i)
- 使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和单元格要区分开,表头用th,单元格用td
- 表单域要用fieldset标签抱起来,并用legend标签说明表单的用途
- 每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在label标签中设置for=someId来让说明文本和相对应的input关联起来