HTML5规范保持了对现有HTML的最大兼容,并保留了绝大部分元素和属性,HTML推荐使用CSS来控制HTML文档样式
HTML保留的基本元素有以下几个: html
<!-- -->: 定义HTML注释 前端
<html>:HTML5文档的根元素 java
<head>:定义HTML5文档的页面头部分 android
<title>:定义HTML5文档的标题 程序员
<body>:定义HTML5文档的主体部分 web
<style>:用于引入样式定义 编程
<h1>到<h6>:定义标题一到标题六 浏览器
<p>:定义段落 缓存
提示:几乎全部的HTML元素均可指定id、style和class属性,其中id属性用于为HTML元素指定一个惟一标识,该标识是经过DOM访问HTML元素的重要途径,class和style属性是CSS样式相关属性。
<br>:插入一个换行 服务器
<hr>:定义水平线
<div>:定义文档中的节,也就是咱们说的区块,会占满一行
<span>:与<div>基本类似,定义的是一个行内标签样式
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>基本标签</title> </head> <body> <!-- 采用标题一到标题六来输出文本 --> <h1>疯狂Java讲义</h1> <h2>疯狂Android讲义</h2> <h3>轻量级Java EE企业应用实战</h3> <h4>疯狂XML讲义</h4> <h5>疯狂Ajax讲义</h5> <h6>经典Java EE企业应用实战</h6> <!-- 输出一条水平线 --> <hr /> <!-- 使用三个span定义三节 --> <span>TOmcat</span><span>Jetty</span><span>Resin</span> <!-- 输出换行 --> <br /> <!-- 使用三个div定义三节 --> <div>Tomcat</div><div>Jetty</div><div>Resin</div> <!-- 使用三个p定义三个段落--> <p>Tomcat</p><p>Jetty</p><p>Resin</p> </body> </html>
<b>:定义粗体文本
<i>:定义斜体文本
<em>:定义强调文本,实际效果与斜体文本差很少
<strong>:定义粗体文本
<small>:定义小号字体文本,一般用来标注免责声明、注意事项、法律规定和版权
<sup>: 定义上标文本
<sub>: 定义下标文本
<bdo>:定义文本显示方向,该标签可指定dir属性,属性值只能是ltr或rtl
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>格式化标签</title> </head> <body> <span><b>加粗文本</b></span><br /> <span><i>斜体文本</i></span><br /> <span><b><i>粗斜体文本</i></b></span><br /> <span><em>被强调的文本</em></span><br /> <p><strong>加粗文本</strong></p> <small><span>小号字体文本</span></small><br /> <div>普通文本<sup>上标文本</sup></div> <span>普通文本<strong><sub>下标加粗文本</sub></strong></span><br /> <!-- 指定文本从左到右(正常状况)排列 --> <bdo dir="ltr">从左到右排列的文本</bdo><br /> <!-- 指定文本从右向左排列 --> <bdo dir="rtl">从右向左排列的文本</bdo><br /> </body> </html>
<abbr>:用于表示一个缩写,可指定title属性,该属性指定该缩写所表明的全称
<address>:用于表示一个地址,斜体显示文本。
<blockquote>:用于定义一段长的引用文本,浏览器会使用缩进的方式显示,该标签可指定cite属性,该属性指定该引用文本所引用的网址URL
<q>:用于定义一段短的引用文本,浏览器会为这段被引用的文本添加引号
<cite>:用于表示做品的标题,斜体显示
<code>:表示一段计算机代码
<dfn>:用于定义一个专业术语,浏览器会使用粗体或斜体显示
<del>:定义文档中被删除的文本。
<ins>:定义文档中插入的文本,浏览器一般会使用下划线显示
<pre>:表示该元素所包含的文本已进行了“预格式化”
<samp>:用于定义示范文本内容
<kdb>:用于定义键盘文本
<var>:用于表示一个变量。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>语义相关元素</title> </head> <body> <!-- 使用q表示一段短的引用文本 --> <p>疯狂Java的精神是<q cite="http://www.fkjava.org">疯狂源自梦想,技术成就辉煌。</q>这也是全部Java程序员的梦想</p> <div> <!-- 使用blockquote表示一段长的引用文本 --> <blockquote> 景色无故五十铉,一炫一柱思年华。<br /> 庄生晓梦迷蝴蝶,望帝春心托杜鹃。<br /> 沧海月明珠有泪,蓝田日暖玉生烟。<br /> 此情可待成追忆,只是当时已惘然。 </blockquote> 是唐朝诗人李商隐的表明做,诗中影藏着一种淡淡的忧伤,让人没法言说,但又没法释怀。 </div> <p> <cite>《芙蓉镇》</cite>、<cite>《蓝风筝》</cite>是国内导演拍摄的最有思考深度的两部电影。 </p> <p> 下面定义了一个Java类:<br /> <code> public class Cat<br /> {<br /> private int name = "garfield";<br /> }<br /> </code> </p> <!-- pre元素包含的内容是"预格式化"文本 --> <pre> public class Cat { private int name = "garfield"; } </pre> <p> <!-- 使用abbr定义缩写 --> 疯狂Java教育中心的缩写是:<abbr title="疯狂Java教育">fkjava</abbr> <!-- 使用address定义地址 --> 疯狂软件地址是:<address>广州市天河区车坡大纲路4号冯弘大厦306-3011</address> <!-- 使用dfn定义专业术语 --> <p> <dfn>HTML</dfn>是一种广为人知的标记语言。 </p> <p> 可经过输入以下命令:<br /> <kbd>list -l</kbd><br /> 在Linux的Shell窗口查看当前目录下全部文件、目录的详细信息。 </p> <p> 若是您在阅读疯狂Java体系图书时,遇到有任何没法理解的技术问题,<br /> 请登录www.fkjava.org发帖提问,可按以下示例内容发帖:<br /> <!-- 使用samp定义示范文本内容 --> <samp> 我在阅读XXX图书的第X章、第X节时,遇到一个XXX问题,<br /> 错误提示信息是:XXX。 </samp> </p> <!-- 使用var定义变量 --> <var>i</var>、<var>j</var>、<var>k</var>一般用于做为循环计数器变量。 <!-- 使用del和ins表示修订 --> <p>Android是一个<del>开发</del><ins>开放</ins>式的手机、平板电脑操做系统</p> </p> </body> </html>
HTML5保留了定义超连接的<a.../>元素,它有以下3个重要的属性:
href:指定超连接所关联的另外一个资源
target:指定使用哪一种框架来装载资源,有_self、_blank、_top、 _parent四个值
media:指定目标URL所引用的媒体类型,默认为all,它是HTML5新 增的属性
<ul>:定义无序列表
<ol>:定义有序列表,该元素还能够指定如下三个属性:
start:指定列表项的起始数字
type:指定使用哪一种类型的编号
reversed:该属性指定是否将排序反转
<li>:定义列表项目
<dl>:也用于定义列表,只能包含<dt>和<dd>两个子元素
<dt>:用于定义列表,只能包含<dd>子元素
<dd>:定义普通列表项
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>列表相关标签</title> </head> <body> <!-- 定义无序列表 --> <ul> <li>疯狂Java讲义</li> <li>轻量级Java EE 企业应用实战</li> <li>疯狂Android讲义</li> </ul> <!-- 定义有序列表 --> <ol start="2" type="I"> <li>疯狂Java讲义</li> <li>轻量级Java EE 企业应用实战</li> <li>疯狂Android讲义</li> </ol> <!-- 定义列表 --> <dl> <!-- 定义标题列表项 --> <dt>疯狂Java体系</dt> <dd>疯狂Java讲义</dd> <dd>轻量级Java EE企业应用实战</dd> <dd>疯狂Android讲义</dd> <!-- 定义标题列表项 --> <dt>做者其余图书</dt> <dd>Struts 2.1 权威指南</dd> <dd>基于J2EE的Ajax宝典</dd> </dl> </body> </html>
HTML5保留了<img.../>元素在页面中定义图像,它是一个空元素,它必须制定如下两个属性:
src:指定图片文件所在的位置,能够是相对或绝对路径
alt:指定一段文本,做为图片的提示信息
<img>的两个可选属性:
height:图片高度
width:图片宽度
与<img>相关的标签:
<map>:定义图片映射
<area>:定义图片映射的内部区域
<table>:用于定义表格,它能够指定以下属性:
cellpadding:指定单元格内容和单元格边框之间的间距
cellspacing:指定单元格时间的间距
width:指定表格的宽度
注意:HTML5建议将表格的全部属性都放到CSS中定义
<caption>:用于定义表格标题
<tr>:定义表格行
<td>:定义单元格,它能够指定以下几个属性:
colspan:指定该单元格跨多少列
rowspan:指定单元格可横跨的行数
height:指定该单元格的高度
width:指定该单元格的宽度
<th>:定义表格页眉的单元格
<tbody>:定义表格的主体
<thead>:定义表格头
<tfoot>:定义表格脚
注意:若是使用<thead.../>和<tfoot.../>标签,建议使用以下次序使用它们: <thead.../>、<tfoot.../>、<tbody.../>,浏览器会自动将<tfoot.../>呈如今最下面
<col>:该元素为表格中的一个或多个列指定属性值
<colgroup>:该元素用于为表格中的一个或多个列指定属性值
HTML5再也不推荐在页面中使用框架集,但保留了<iframe.../>元素,它有 一个属性src,
该属性指定一个URL,指定该iframe将装载那个页面
HTML5为大部分HTML元素增长了contentEditable属性,若是将该属性的值设为true,那么浏览器容许开发者直接编辑该HTML元素里的内容,而且它具备可继承性
HTML5为容许设置contentEditable属性的元素提供了isContentEditable属性,当元素可编辑则返回true,不然false
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>contentEditable属性</title> </head> <body> <!-- 直接指定contentEditable=“true”代表该元素是可编辑的 --> <div contenteditable="true" style="width: 500px; border:1px solid black"> 疯狂Java讲义 <!-- 该元素的父元素有contentEditable=“true”,所以该表格也是能够编辑的 --> <table style="width: 420px; border-collapse: collapse;" border="1"> <tr> <td>疯狂Java讲义</td> <td>疯狂Android讲义</td> </tr> <tr> <td>轻量级Java EE企业应用实战</td> <td>经典Java EE企业应用实战</td> </tr> </table> </div> <hr /> <!-- 这个表格默认是不可编辑的,双击以后该表格变为 --> <table id="target" ondblclick="this.contentEditable=true" style="width: 420px; border-collapse: collapse;" border="1"> <tr> <td>Java</td> <td>Ruby</td> </tr> <tr> <td>C/C++</td> <td>Python</td> </tr> </table> </body> </html>
designMode属性至关于一个全局的contentEditable属性,若是把整个页面的designMode属性设置为on,则该页面上全部可支持contentEditable属性的元素都编程可编辑状态
document.designMode = "on";
HTML5为全部元素提供一个hidden属性,若是某元素的hidden设为true, 则浏览器不显示该组件,且不保留该组件所占空间
<div id="target" hidden="true" style="height: 80px;">文字内容</div> <button onclick="var target=document.getElementById('target'); target.hidden=!target.hidden;">显示/隐藏</button>
HTML5为<input.../>、<textarea.../>等元素增长了spellcheck属 性,该属性支持 true和false两个值,若是为true,则浏览器会对用户 的输入进行语法检
<!-- 指定执行拼写检查 --> <textarea spellcheck="true" rows="3" cols="40"></textarea>
<article>:该元素定义页面上一篇独立、完整的“文章”.
<article.../>能够包含<header.../>做为头部
<article.../>能够包含<footer.../>做为尾部
<article.../>能够包含<section.../>做为文章的分段
<article.../>能够包含<article.../>做为文章的附属文章
<section>:该元素用于对页面上的内容进行分块
建议使用<h1>-<h6>做为<section.../>的标题
<section.../>能够包含<article.../>
<section.../>也能够包含<section.../>
注意:<article.../>和<section.../>很容易混淆,它们能够包含不少子元素,也能够相互嵌套。通常 使用<article.../>表达一篇独立、完整的文章,而使用<section.../>对页面内容进行分块。
<nav>:该属性用于定义页面上的“导航条”
<aside>:该属性用于定义页面内容的附属信息,推荐此属性配合CSS渲染成侧边栏
<header>:该属性主要为<article.../>定义头部信息
<hgroup>:该元素组织多个<h1>~<h6>这样的标题元素
<footer>:该元素主要为<article>定义脚注信息
<figure>:该元素用于表示一块独立的“图片区域”,它能够包含一个或多个由<img>元素组成的图片,除此以外,它还能够包含一个<figcaption>元素,用于表示该图片区域的标题
<figcaption>:一般放在<figure>元素里,用于表示图片区域的标题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML5新增元素 - article</title> </head> <body> <article> <!-- 帖子的“头部” --> <header> <h1>学习Android,必须先学习Java吗?</h1> <div>做者:crazystu</div> </header> <p> 学习Android,必须先学习Java吗? Android上的应用程序只能用Java编写吗?能够用C++吗? </p> <!-- 帖子的“回复”部分,用section元素表示 --> <section> <article> <!-- 回复的头部 --> <header> <h2>仍是得学习Java</h2> <div>做者:kongyeeku</div> </header> <p> 虽然Android不必定要使用Java开发,还能够选择JavaScript<br /> 或NDK开发,但Java毕竟是Android主要的开发语言,<br /> 所以建议学习Android以前仍是学习Java </p> </article> <!-- 每个article表明一个回复 --> <article> <!-- 回复的头部 --> <header> <h2>Java是基础</h2> <div>做者:kuan008</div> </header> <p> Java是基础,学好Java再去学习Android事半功倍。 </p> </article> </section> <!-- 帖子的”脚注“ --> <footer> 以上帖子和回复只表明我的观点,不表明疯狂Java联盟的观点或立场 </footer> </article> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML5新增元素 - aside</title> </head> <body> <article> <!-- 帖子的头部 --> <header> <h1>学习Android,必须先学习Java吗?</h1> <div>做者:crazystu</div> </header> <p> 学习Android,必须先学习Java吗? Android上的应用程序只能用Java编写吗?能够用C++吗? </p> <!-- 帖子的“回复”部分,用section元素表示 --> <section> <!-- 回复的头部 --> <header> <h2>仍是得学习Java</h2> <div>做者:kongyeeku</div> </header> <p> 虽然Android不必定要使用Java开发,还能够选择JavaScript<br /> 或NDK开发,但Java毕竟是Android主要的开发语言,<br /> 所以建议学习Android以前仍是学习Java </p> </section> </article> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML5新增结构元素 - figure</title> </head> <body> <figure style="border:2px solid black; padding:5px; width:500px;"> <figcaption><b>疯狂Java体系图书</b></figcaption> <img src="images/java.png" alt="疯狂Java"> <img src="images/android.png" alt="疯狂Android"> <img src="images/ee.png" alt="轻量级Java EE"> </figure> </body> </html>
HTML5提供了如下两个语义相关的元素:
<mark>:用于显示页面中须要重点关注的内容,浏览器一般会使用黄色来标注,好比搜索结果中用户输入的关键字
<time>:用于显示被标注的内容是日期、时间或日期时间,该元素有一个datatime属性,用于向机器提供时间
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>新增的语义相关元素 - mark和time</title> </head> <body> <article> <header> <h2>疯狂软件即将引入<mark>HTML5</mark>相关课程</h2> </header> <p> <mark>HTML5</mark>是下一代的HTML规范。<br /> <mark>HTML5</mark>即将把前端开发者从繁重的开发中解放出来<br /> 为了把握技术潮流的脉搏,疯狂软件教育计划在 <time datetime="2012-04-21">2012年4月</time>引入<mark>HTML5</mark>相关课程 </p> </article> </body> </html>
<details>:用于显示一段详细信息或某个主题的细节,一般它会跟<summary>元素结合使用,把<summary>放在<details>中,为其定义摘要信息,当用户点击摘要信息时,浏览器会显示出详细内容。目前只有Chrome浏览器支持这两个属性
<details> <summary>芙蓉镇</summary> 《芙蓉镇》是一部极好的电影,每一个中国人都不该该错过。 </details>
<meter>:用于表示一个已知最大值和最小值的计数仪表,它能够指定以下属性:
value:指定计数仪表的当前值,默认为0
min:指定计数仪表的最小值,默认为0
max:指定计数仪表的最大值,默认为1
low:指定计数仪表制定范围的最小值,它必须大于min
high:指定计数仪表指定范围的最大值,它必须小于max
optimum:指定计数仪表有效范围的最佳值
<progress>:用于表示一个进度条,它能够指定以下属性:
max:指定进度条完成时的值
HTML5使用<head.../>元素定义文档头,该元素能够包含以下子元素:
<script>:该元素用于包含JavaScript脚本
<style>:该元素用于定义内部CSS样式
<link>:该元素用于连接外部CSS样式资源
<title>:该元素定义文档标题
<base>:该元素用于指定该页面中全部连接的基准连接
<meta>:该元素用于定义HTML页面的元数据,也就是一些name-value对,它能够指定以下属性
http-equiv:指定元信息的名称
name:指定元信息的名称,能够随意指定
content:指定元信息的值
<head> <title>我是标题</title> <meta name="author" content="Yeeku.H.Lee"> <meta name="websit" content="http://www.xxx.org"> <meta name="copyright" content="2001-2008 xxx.org"> <meta name="Keywords" content="Java论坛, Java技术论坛"> </head>
http-equiv属性能够指定以下值:
Expires:指定页面的过时时间,一旦过时必须从服务器下载
<meta http-equiv="Expires" content="Sat Sep 27 16:12:36 CST 2008">
Progma:指定禁止浏览器从本地磁盘缓存中调阅页面内容
<meta http-equiv="Progma" content="no-cache">
Refresh:指定浏览器多长时间后自动刷新指定页面
<!-- 设置2秒后自动刷新本页面 --> <meta http-equiv="Refresh" content="2" /> <!-- 设置2秒后自动刷新http://www.xxx.org --> <meta http-equiv="Refresh" content="2;URL= / >
Set-Cookie:设置Cookie,若是网页过时,那么Cookie也将被删除
<meta http-equiv="Set-Cookie" content="name=value expires=Sat Sep 27 16:12:36 CST 2008, path=" />
content-Type:设置该页面的内容类型和所用的字符集
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
HTML5新增的拖放API,可让HTML页面的任意元素变得能够被拖放,经过它能够开发出更友好的人机交互界面
在HTML5中,把须要拖动的元素的draggable属性设置为true,就表示它能够被拖动了,但此时它未携带数据,因此用户是看不到效果的,为了让拖动操做能携带数据,应该为被拖动元素的ondragstart事件指定监听器。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>可拖动的DIV</title> </head> <body> <div id="source" style="width:80px;height:80px;border:1px solid black;background-color:#bbb;" draggable="true">可拖动的Div</div> <script> var source = document.getElementById('source'); source.ondragstart = function (evt) { evt.dataTransfer.setData('text/plain', 'www.xxx.org'); } </script> </body> </html>
为了让document接受“放”操做,应该为document的ondragover事件指定监听器,在监听器中取消document对拖动事件的默认行为
document.ondragover = function (evt) { //取消事件的默认行为 return false; }但Firefox和Chrome对此操做有不一样的反应,因此须要对document的ondrop事件设置监听器
document.ondrop = function (evt) { //取消事件的默认行为 return false; }下表是用户在拖放HTML元素时可能会触发的事件
事件 | 事件源 | 描述 |
ondragstart | 被拖动的HTML元素 | 开始拖动操做时触发该事件 |
ondrag | 被拖动的HTML元素 | 拖动过程当中会不断的触发该事件 |
ondragend | 被拖动的HTML元素 | 拖动结束时触发该事件 |
ondragenter | 拖动时鼠标通过的元素 | 被拖动的元素进入本元素的范围内时候 |
ondragover | 拖动时鼠标通过的元素 | 被拖动的元素进入本元素的范围内拖动时会不断触发该事件 |
ondragleave | 拖动时鼠标通过的元素 | 被拖动的元素离开本元素时触发该事件 |
ondrop | 拖动时鼠标通过的元素 |
其余元素被放到了本元素中时触发该事件 |
下面的代码实现了一个能够自由拖动的<div>元素
<!DOCTYPE html> <html> <head> <meat charset="utf-8"> <title></title> <style> div#source { width: 80px; height: 80px; background-color: #bbb; } </style> </head> <body> <div id="source" draggable="true">可拖动Div</div> <script> var source = document.getElementById('source'); source.ondragstart = function (evt) { evt.dataTransfer.setData('text/plain', 'www.baidu.com'); } document.ondragover = function (evt) { return false; //取消事件默认行为 } document.ondrop = function (evt) { source.style.position = 'absolute'; source.style.left = evt.pageX + 'px'; source.style.top = evt.pageY + 'px'; return false; //取消事件默认行为 } </script> </body> </html>