HTML5学习之语义化标签(一)
一、为什么HTML5要引入新语义标签
在HTML5出现之前,我们一般采用DIV+CSS布局我们的页面。但是这样的布局方式不仅使我们的文档结构不够清晰,而且不利于搜索引擎爬虫对我们页面的爬取。为了解决上述缺点,HTML5新增了很多新的语义化标签。
二、引入语义化标签的优点
引入语义化标签的好处主要有下列三点:
- 比
<div>
标签有更加丰富的含义,方便开发与维护 - 搜索引擎能更方便的识别页面的每个部分
- 方便其他设备解析(如移动设备、盲人阅读器等)
三、标签详解
所谓语义化标签就是一种我们仅通过标签名就能判断出该标签内容的语义的标签。下面将介绍<article> <section> <nav> <aside>、<header> <footer>
等HTML5新增的语义化区块标签。
(一) header
通常被放置在页面或者页面中某个区块元素的顶部,包含整个页面或者区块的标题、简介等信息,起到引导与导航的作用。
我们不但可以放置页面或者页面中某个区块的标题,还可以放置搜索表单、logo图片等元素,按照最新的W3C标准,我们还可以放置<nav>
导航栏。
下面是一个使用该标签的网站头部实例:
<header>
<img src="images/logo.png" alt="**科技" />
<h1>**信息科技有限公司</h1>
</header>
需要注意的是,一个文档中可以包含一对或者一对以上的<header>
标签。标签的位置是次要的,不一定非要显示在页面的上方,我们可以为任何需要的区块标签添加<header>
元素,例如下面将要讲解的<article> <section>
等标签。
(二)nav
表示页面的导航,可以通过导航连接到网站的其他页面,或者当前页面的其它部分。
<nav>
不但可以作为页面独立的导航区域存在,我们还可以在<header>
标签中使用。此外,<nav>
标签还可以显示在侧边栏中。由此可见,一个页面之中可以有多个<nav>
标签。
根据HTML5标准,<nav>
标签只用于页面的主要导航部分。因为搜索引擎或者屏幕阅读器会根据<nav>
标签来确定网站的主体内容,所以并不是任意一组超链接都适合放置在<nav>
标签中,我们只要将主要的,基本的链接组放进<nav>
即可,对于有辅助性的页脚链接则不推荐使用<nav>
标签。
示例如下:
<header>
<img src="images/logo.png" alt="**科技" />
<h1>**信息科技有限公司</h1>
<nav>
<li><a href="#">首页</a></li>
<li><a href="example.html">客户案例</a></li>
<li><a href="service_one.html">技术服务</a></li>
<li><a href="aboutus_one.html">关于我们</a></li>
<li><a href="connection.html">联系我们</a></li>
</nav>
</header>
值得我们注意的是,HTML5规范不允许将<nav>
标签嵌套在<address>
标签中使用。
(三)aside
所包含的内容不是页面的主要内容、具有独立性,是对页面的补充。
<aside>
标签一般使用在页面、文章的侧边栏、广告、友情链接等区域。
示例如下:
<article>
<h1>HTML5学习之语义化标签</h1>
<p>....正文.....</p>
<aside>
<h2>什么是语义化标签</h2>
<p>语义化标签就是......</p>
</aside>
</article>
(四)footer
一般被放置在页面或者页面中某个区块的底部,包含版权信息、联系方式等信息。
跟<header>
标签一样,<footer>
标签的使用个数没有限制,可以在任意需要的区块底部使用。
示例如下:
<footer>
<small>
版权所有 © 2016-2017 **信息科技有限公司
</small>
</footer>
(五)article
表示包含于一个文档、页面、应用程序或网站中的一段独立的内容,可以被独立的发布或者重新使用文章标记标签。
<article>
标签应该使用在相对比较独立、完整的的内容区块,所以我们可以在一篇博客、一个论坛帖子、一篇新闻报道或者一个用户评论中使用它。通常情况下,一个<article>
元素包括标题、正文和脚注。和<nav>
标签一样,该标签同样不能用在<address>
标签中;
示例如下:
<article>
<h1>HTML5学习之语义化标签</h1>
<p>....正文.....</p>
<footer>版权所有*伪版必究</footer>
</article>
<article>
标签还可以嵌套使用,但是它们必须是部分与整体的关系。例如在一篇发表的博客中,我们可以对读者评论使用该标签。
示例如下:
<article>
<h1>HTML5学习之语义化标签</h1>
<p>....正文.....</p>
<article>
<header>
<h2>读者评论</h2>
</header>
<article>
<header>
<h3>评论人:张三</h3>
<p>评论时间:<time datetime="2017-02-15">2017-02-15 11:45:23</time></p>
</header>
<p>张三到此一游</p>
</article>
<article>
<header>
<h3>评论人:李四</h3>
<p>评论时间:<time datetime="2017-02-09">2017-02-09 14:20:15</time></p>
</header>
<p>李四到此一游</p>
</article>
</article>
</article>
(六)section
是一个主题性的内容分组,通常用于对页面进行分块或者对文章等进行分段
<section>
标签所包裹的是有一组相似的主题的内容,可以用这个标签来实现文章的章节、标签式对话框中的各种标签页等类似的功能。
<section>
通常包含一个头部<header>
、可能还会包含一个尾部<footer>
。
示例如下:
<article>
<h1>JavaScript框架</h1>
<p>Javascript框架是指以Javascript语言为基础搭建的编程框架。</p>
<section>
<h2>angular.Js<h2>
<p>angular.Js是一款优秀的前端JS框架</p>
</section>
<section>
<h2>Vue.js<h2>
<p>Vue.js是用于构建交互式的Web界面的库</p>
</section>
<section>
<h2>jQuery<h2>
<p>jQuery是一个快速、简洁的JavaScript框架。</p>
</section>
</article>
在这篇关于JS框架的文章中,所列举的三个框架都是文章主题构成的一部分,所以我们使用<section>
标签对其进行分段。
我们不但可以在<article>
标签中使用<section>
标签,还可以在<section>
标签中使用<article>
标签。
示例如下:
<section>
<h1>HTML5技术栈</h1>
<p>广义而言的HTML5包含HTML、CSS和JavaScript三个部分</p>
<article>
<h2>HTML<h2>
<p>内容</p>
</article>
<article>
<h2>CSS<h2>
<p>样式</p>
</article>
<article>
<h2>JavaScript<h2>
<p>行为</p>
</article>
</section>
在这个例子中,<section>
标签代表一段内容,在这段内容中,HTML、CSS、Javascript是三个完全独立的部分,因而我们为这三个不同的部分分别使用<article>
标签。
<div> <section> <article>
三者的比较:
<div>
:应用广泛,只要我们想为一个区域定义一个样式或者为其添加JS行为,就可以使用div标签<section>
:包含的内容是一个明确的主题,通常有标题区域<article>
:如果我们的页面中需要一个单独的模块来实现一个单独的功能,就用<article>
,其他的时候都用<section>
。
四、文档级别语义
HTML5试图为每个元素加入一个特定的文档级别语义。
(一)ruby、rt、rp
ruby是一种排版注释系统,是位于横排基础文本上方的简短文字,主要针对东亚语言作出简单的读音注释。例如可以为中文或日文显示读音。
ruby涉及的元素包括ruby、rt以及rp。首先使用ruby指定一个具体的表达式,然后使用rt提供说明。rt部分将显示在表达式上方。
下面这个例子中,拼音将显示在文字的上方。
<ruby>
北<rt>bei</rt>
京<rt>jing</rt>
</ruby>
但是在不支持ruby的浏览器中需要使用rp对这两个区块进行视觉上的隔离。
<ruby>
北
<rp>
<rt>bei</rt>
</rp>
京
<rp>
<rt>jing</rt>
</rp>
</ruby>
(二)time
为了将现在的常用的日期和时间语句用规范的、利于机器识别的格式进行表述,time元素提供了一个可选的时间和时区组件。
为了确保机器能够正确识别,我们可以使用datetime属性,其属性值可以被定义为时间、日期或者这两者的复合体。
<time datetime="2017-07-03">
还可以使用pubdate为一个网页指定发布时间。
<time datetime="2017-07-03" pubdate>
<!--以下两种形式也可以行-->
<time datetime="2017-07-03" pubdate="">
<time datetime="2017-07-03" pubdate="pubdate">
注意:在 HTML5中,true或false并非有效的属性值,当解释器发现存在布尔属性时,它将直接解释为true。如果需要将属性设为false,将这个属性去掉即可。
(三)mark
mark元素用于高亮标记一段文字。
可以使用mark元素来标记出网页里被搜索的关键词或是用于高亮显示一段解释性的代码。
(四)wbr
wbr元素用于让浏览器为长单词增加可选择的破折号,以便自动拆行。
在相当长的单词中插入一对wbr元素,可以让浏览器根据排版的需要决定是否将单词换行。破折号是否出现,以及出现的位置完全由排版决定。wbr只是允许自动拆行,但非强制拆行。
(五)略微改变的元素
在HTML4版本中的标签元素在HTML5中有了新的定义。
使用b表示文档渲染为粗体,而i表示文档渲染为斜体。使用strong和em来强调一段重要的文本。cite用来为对参考文献的引用进行定义,比如书籍或杂志的标题。small不仅仅指的是小字体,它还同样为法律声明增添不具有重要性的旁注或小字。hr现在表达的是主体性的间断,不再仅仅是分割版面的一条水平线。
HTML5学习之语义化标签(一)的更多相关文章
- HTML5学习之语义化标签
一.为什么HTML5要引入新语义标签 在HTML5出现之前,我们一般采用DIV+CSS布局我们的页面.但是这样的布局方式不仅使我们的文档结构不够清晰,而且不利于搜索引擎爬虫对我们页面的爬取.为了解决上 ...
- Html5新增的语义化标签(部分)
2014年10月29日,万维网联盟宣布,经过接近8年的艰苦努力,html5的标准规范终于制定完成.这是互联网的一次重大变革,这也许是一个时代的来临! 总结一些h5新增的语义化标签,记录下来方便自己学习 ...
- 从零开始学 Web 之 HTML5(一)HTML5概述,语义化标签
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- html5新增的语义化标签极其作用
在html5中,新增了几个语义化标签:<article>.<section>.<aside>.<hgroup>. <header>,< ...
- HTML5常用的语义化标签
快速查询 article | aside | nav | section | header | footer 架构预览 nav 定义导航链接的部分 在页脚显示一个站点的导航链接,如首页.服务信息页面. ...
- HTML5 部分新增语义化标签元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- html5语义化标签大全
常见的语义化标签有 <article>.<section>.<nav>.<aside>.<header>.<footer> 详细 ...
- 第二季第十一天 html5语义化标签 css透明度
span不能设置宽高背景 HTML5语义化标签 <section>标签所包裹的是有一组相似的主题的内容,可以用这个标签来实现文章的章节.标签式对话框中的各种标签页等类似的功能. <s ...
- HTML5语义化标签重构页面
在HTML5未出现之前我们都用div+css来构建页面,比如<div id=”header”>,div的滥用,使得代码的可读性和可维护性很差,现在用本文来介绍一下用HTML5′干净的’语义 ...
随机推荐
- iOS开发——实时监控网速(仅作参考,发现一点问题)
开发中用到获取网速的地方,应该就两种: 1.下载速度,这种可以直接在接受数据的地方统计计算.这个就不讲了. 2.获取手机网卡的数据,可以监控网卡的进出流量,下面就是. #import "Vi ...
- mysql问题: alter导致速度慢
1 如何并行执行. 数据库里有一个数据量非常大的表,当对这个表进行alter的时候,这时候该表是只读的,由于数据量很大alter时间很长,如果这时候有insert或update操作,有什么办法在这期间 ...
- 51nod1119(除法取模)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...
- MySQL协议分析2
MySQL协议分析 议程 协议头 协议类型 网络协议相关函数 NET缓冲 VIO缓冲 MySQL API 协议头 ● 数据变成在网络里传输的数据,需要额外的在头部添加4 个字节的包头. . packe ...
- STM32的时钟树深入详解以及RCC配置
在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT ...
- OpenGL ES
前言 OpenGL ES是Khronos Group创建的一系列API中的一种(官方组织是:http://www.khronos.org/).在桌面计算机上有两套标准的 3DAPI:Direct3D和 ...
- 部分网站允许空白referer的防盗链图片的js破解代码
Reference: http://www.114390.com/article/27125.htm Javascript源码: 复制代码代码如下: function showImg( url ) { ...
- SRM 592 DIV2 报告
昨天下午查看邮箱,看到了topcoder的SRM比赛通知和cf的比赛通知,当时什么也不想做,心里空荡荡的,忽然就想参加一下,试试看.吃完晚饭回来一看,就剩十几分钟了,匆忙把平台下了,就开始等待比赛开始 ...
- Jquery插件之ajaxForm ajaxSubmit的理解用法
如今ajax满天飞,作为重点的form自然也受到照顾. 其实,我们在平常使用Jquery异步提交表单,一般是在submit()中,使用$.ajax进行.比如: $(function(){ $( ...
- python 发起HTTP请求
因为微信公众号群发需要调用高级群发接口,其中涉及到python发起HTTP请求,现在将相关实现操作记录如下: 首先,HTTP请求分为GET和POST,如下所示: 首先是发起get 请求: # -*- ...