HTML5提供了新的元素来建立更好的页面结构:php
标签css |
描述html |
<article>css3 |
定义页面独立的内容区域。git |
<aside>web |
定义页面的侧边栏内容。canvas |
<bdi>浏览器 |
容许您设置一段文本,使其脱离其父元素的文本方向设置。缓存 |
<command>ruby |
定义命令按钮,好比单选按钮、复选框或按钮 |
用于描述文档或文档某个部分的细节 |
|
定义对话框,好比提示框 |
|
标签包含 details 元素的标题 |
|
规定独立的流内容(图像、图表、照片、代码等等)。 |
|
定义 <figure> 元素的标题 |
|
定义 section 或 document 的页脚。 |
|
定义了文档的头部区域 |
|
定义带有记号的文本。 |
|
定义度量衡。仅用于已知最大和最小值的度量。 |
|
定义导航连接的部分。 |
|
定义任何类型的任务的进度。 |
|
定义 ruby 注释(中文注音或字符)。 |
|
定义字符(中文注音或字符)的解释或发音。 |
|
在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。 |
|
定义文档中的节(section、区段)。 |
|
定义日期或时间。 |
|
规定在文本中的何处适合添加换行符。 |
HTML5 <canvas> 元素用于图形的绘制,经过脚本 (一般是JavaScript)来完成.
<canvas> 标签只是图形容器,您必须使用脚原本绘制图形。
<canvas>简单实例以下:
<canvasid="myCanvas"width="200"height="100"></canvas>
canvas 元素自己是没有绘图能力的。全部的绘制工做必须在 JavaScript 内部完成:
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
</script>
拖放是一种常见的特性,即抓取对象之后拖到另外一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都可以拖放。
设置元素为可拖放
首先,为了使元素可拖动,把 draggable 属性设置为 true :
<imgdraggable="true">
拖动什么 - ondragstart 和 setData()
放到何处 - ondragover
进行放置 - ondrop
HTML5 Geolocation API 用于得到用户的地理位置。
鉴于该特性可能侵犯用户的隐私,除非用户赞成,不然用户位置信息是不可用的。
<script>
var x=document.getElementById("demo");
function getLocation()
{
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="该浏览器不支持获取地理位置。";}
}
function showPosition(position)
{
x.innerHTML="Latitude: "+ position.coords.latitude +
"<br>Longitude: "+ position.coords.longitude;
}
</script>
HTML5 规定了在网页上嵌入音频元素的标准,即便用 <audio> 元素。
<audiocontrols>
<sourcesrc="horse.ogg"type="audio/ogg">
<sourcesrc="horse.mp3"type="audio/mpeg">
您的浏览器不支持 audio 元素。
</audio>
HTML5 规定了一种经过 video 元素来包含视频的标准方法。
<videowidth="320"height="240"controls>
<sourcesrc="movie.mp4"type="video/mp4">
<sourcesrc="movie.ogg"type="video/ogg">
您的浏览器不支持Video标签。
</video>
HTML5 拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。
<inputtype="range"name="points"min="1"max="10">
Search Google: <inputtype="search"name="googlesearch">
电话号码: <inputtype="tel"name="usrtel">
HTML5 有如下新的表单元素:
标签 | 描述 |
---|---|
<datalist> | <input>标签订义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。 |
<keygen> | ><keygen> 标签规定用于表单的密钥对生成器字段。 |
<output> | <output> 标签订义不一样类型的输出,好比脚本的输出。 |
<datalist> 元素规定输入域的选项列表。
<datalist> 属性规定 form 或 input 域应该拥有自动完成功能。当用户在自动完成域中开始输入时,浏览器应该在该域中显示填写的选项:
使用 <input> 元素的列表属性与 <datalist> 元素绑定.
<inputlist="browsers">
<datalistid="browsers">
<optionvalue="Internet Explorer">
<optionvalue="Firefox">
<optionvalue="Chrome">
<optionvalue="Opera">
<optionvalue="Safari">
</datalist>
HTML5 的 <form> 和 <input>标签添加了几个新属性.
<form>新属性:
<input>新属性:
HTML5提供了新的语义元素来明确一个Web页面的不一样部分:
Web Storage DOM API 为Web应用提供了一个可以替代cookie的Javascript解决方案
sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
localStorage 对象存储的数据没有时间限制。次日、第二周或下一年以后,数据依然可用。
对于大量复杂数据结构,通常使用IndexDB
HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网链接时进行访问。
应用程序缓存为应用带来三个优点:
HTML5 Cache Manifest 实例
下面的例子展现了带有 cache manifest 的 HTML 文档(供离线浏览):
<!DOCTYPE HTML>
<htmlmanifest="demo.appcache">
<body>
The content of the document......
</body>
</html>
Manifest 文件
manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。
manifest 文件可分为三个部分:
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.php
FALLBACK:
/html/ /offline.html
当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker 是运行在后台的 JavaScript,独立于其余脚本,不会影响页面的性能。您能够继续作任何愿意作的事情:点击、选取内容等等,而此时 web worker 在后台运行。(至关于实现多线程并发)
Server-Sent 事件指的是网页自动获取来自服务器的更新。
之前也可能作到这一点,前提是网页不得不询问是否有可用的更新。经过服务器发送事件,更新可以自动到达。
例子:Facebook/Twitter 更新、估价更新、新的博文、赛事结果等。
EventSource 对象用于接收服务器发送事件通知:
var source=newEventSource("demo_sse.php");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data +"<br>";
};
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}nn";
flush();
?>
WebSocket是HTML5开始提供的一种在单个 TCP 链接上进行全双工通信的协议。在WebSocket API中,浏览器和服务器只须要作一个握手的动做,而后,浏览器和服务器之间就造成了一条快速通道。二者之间就直接能够数据互相传送。浏览器经过 JavaScript 向服务器发出创建 WebSocket 链接的请求,链接创建之后,客户端和服务器端就能够经过 TCP 链接直接交换数据。当你获取 Web Socket 链接后,你能够经过 send() 方法来向服务器发送数据,并经过 onmessage 事件来接收服务器返回的数据。如下 API 用于建立 WebSocket 对象。
选择器 | 示例 | 示例说明 | CSS |
---|---|---|---|
.class | .intro | 选择全部class="intro"的元素 | 1 |
#id | #firstname | 选择全部id="firstname"的元素 | 1 |
* | * | 选择全部元素 | 2 |
element | p | 选择全部<p>元素 | 1 |
element,element | div,p | 选择全部<div>元素和<p>元素 | 1 |
element element | div p | 选择<div>元素内的全部<p>元素 | 1 |
element>element | div>p | 选择全部父级是 <div> 元素的 <p> 元素 | 2 |
element+element | div+p | 选择全部紧接着<div>元素以后的<p>元素 | 2 |
[attribute] | [target] | 选择全部带有target属性元素 | 2 |
[attribute=value] | [target=-blank] | 选择全部使用target="-blank"的元素 | 2 |
[attribute~=value] | [title~=flower] | 选择标题属性包含单词"flower"的全部元素 | 2 |
[attribute|=language] | [lang|=en] | 选择一个lang属性的起始值="EN"的全部元素 | 2 |
:link | a:link | 选择全部未访问连接 | 1 |
:visited | a:visited | 选择全部访问过的连接 | 1 |
:active | a:active | 选择活动连接 | 1 |
:hover | a:hover | 选择鼠标在连接上面时 | 1 |
:focus | input:focus | 选择具备焦点的输入元素 | 2 |
:first-letter | p:first-letter | 选择每个<P>元素的第一个字母 | 1 |
:first-line | p:first-line | 选择每个<P>元素的第一行 | 1 |
:first-child | p:first-child | 指定只有当<p>元素是其父级的第一个子级的样式。 | 2 |
:before | p:before | 在每一个<p>元素以前插入内容 | 2 |
:after | p:after | 在每一个<p>元素以后插入内容 | 2 |
:lang(language) | p:lang(it) | 选择一个lang属性的起始值="it"的全部<p>元素 | 2 |
element1~element2 | p~ul | 选择p元素以后的每个ul元素 | 3 |
[attribute^=value] | a[src^="https"] | 选择每个src属性的值以"https"开头的元素 | 3 |
[attribute$=value] | a[src$=".pdf"] | 选择每个src属性的值以".pdf"结尾的元素 | 3 |
[attribute*=value] | a[src*="44lan"] | 选择每个src属性的值包含子字符串"44lan"的元素 | 3 |
:first-of-type | p:first-of-type | 选择每一个p元素是其父级的第一个p元素 | 3 |
:last-of-type | p:last-of-type | 选择每一个p元素是其父级的最后一个p元素 | 3 |
:only-of-type | p:only-of-type | 选择每一个p元素是其父级的惟一p元素 | 3 |
:only-child | p:only-child | 选择每一个p元素是其父级的惟一子元素 | 3 |
:nth-child(n) | p:nth-child(2) | 选择每一个p元素是其父级的第二个子元素 | 3 |
:nth-last-child(n) | p:nth-last-child(2) | 选择每一个p元素的是其父级的第二个子元素,从最后一个子项计数 | 3 |
:nth-of-type(n) | p:nth-of-type(2) | 选择每一个p元素是其父级的第二个p元素 | 3 |
:nth-last-of-type(n) | p:nth-last-of-type(2) | 选择每一个p元素的是其父级的第二个p元素,从最后一个子项计数 | 3 |
:last-child | p:last-child | 选择每一个p元素是其父级的最后一个子级。 | 3 |
:root | :root | 选择文档的根元素 | 3 |
:empty | p:empty | 选择每一个没有任何子级的p元素(包括文本节点) | 3 |
:target | #news:target | 选择当前活动的#news元素(包含该锚名称的点击的URL) | 3 |
:enabled | input:enabled | 选择每个已启用的输入元素 | 3 |
:disabled | input:disabled | 选择每个禁用的输入元素 | 3 |
:checked | input:checked | 选择每一个选中的输入元素 | 3 |
:not(selector) | :not(p) | 选择每一个并不是p元素的元素 | 3 |
::selection | ::selection | 匹配元素中被用户选中或处于高亮状态的部分 | 3 |
:out-of-range | :out-of-range | 匹配值在指定区间以外的input元素 | 3 |
:in-range | :in-range | 匹配值在指定区间以内的input元素 | 3 |
:read-write | :read-write | 用于匹配可读及可写的元素 | 3 |
:read-only | :read-only | 用于匹配设置 "readonly"(只读) 属性的元素 | 3 |
:optional | :optional | 用于匹配可选的输入元素 | 3 |
:required | :required | 用于匹配设置了 "required" 属性的元素 | 3 |
:valid | :valid | 用于匹配输入值为合法的元素 | 3 |
:invalid | :invalid | 用于匹配输入值为非法的元素 |
用CSS3,你能够建立圆角边框,添加阴影框,并做为边界的形象而不使用设计程序
属性 | 说明 | CSS |
---|---|---|
border-image | 设置全部边框图像的速记属性。 | 3 |
border-radius | 一个用于设置全部四个边框- *-半径属性的速记属性 | 3 |
box-shadow | 附加一个或多个下拉框的阴影 | 3 |
div
{
border:2px solid;
border-radius:25px;
box-shadow:10px10px5px#888888;
border-image:url(border.png)3030 round;
}
CSS3中包含几个新的背景属性,提供更大背景元素控制。
顺序 | 描述 | CSS |
---|---|---|
background-clip | 规定背景的绘制区域。 | 3 |
background-origin | 规定背景图片的定位区域。 | 3 |
background-size | 规定背景图片的尺寸。 | 3 |
div
{
background:url(img_flwr.gif);
background-repeat:no-repeat;
background-size:100%100%;
background-origin:content-box;
}
多背景
body
{
background-image:url(img_flwr.gif),url(img_tree.gif);
}
CSS3 定义了两种类型的渐变(gradients):
background: linear-gradient(direction, color-stop1, color-stop2,...);
background: radial-gradient(center, shape size, start-color,...,last-color);
属性 | 描述 | CSS |
---|---|---|
hanging-punctuation | 规定标点字符是否位于线框以外。 | 3 |
punctuation-trim | 规定是否对标点字符进行修剪。 | 3 |
text-align-last | 设置如何对齐最后一行或紧挨着强制换行符以前的行。 | 3 |
text-emphasis | 向元素的文本应用重点标记以及重点标记的前景色。 | 3 |
text-justify | 规定当 text-align 设置为 "justify" 时所使用的对齐方法。 | 3 |
text-outline | 规定文本的轮廓。 | 3 |
text-overflow | 规定当文本溢出包含元素时发生的事情。 | 3 |
text-shadow | 向文本添加阴影。 | 3 |
text-wrap | 规定文本的换行规则。 | 3 |
word-break | 规定非中日韩文本的换行规则。 | 3 |
word-wrap | 容许对长的不可分割的单词进行分割并换行到下一行。 | 3 |
之前CSS3的版本,网页设计师不得不使用用户计算机上已经安装的字体。使用CSS3,网页设计师可使用他/她喜欢的任何字体。当你发现您要使用的字体文件时,只需简单的将字体文件包含在网站中,它会自动下载给须要的用户。您所选择的字体在新的CSS3版本有关于@font-face规则描述。您"本身的"的字体是在 CSS3 @font-face 规则中定义的。
<style>
@font-face
{
font-family: myFirstFont;
src: url(sansation_light.woff);
}
div
{
font-family:myFirstFont;
}
</style>
2D新转换属性
如下列出了全部的转换属性:
Property | 描述 | CSS |
---|---|---|
transform | 适用于2D或3D转换的元素 | 3 |
transform-origin | 容许您更改转化元素位置 |
2D 转换方法
函数 | 描述 |
---|---|
matrix(n,n,n,n,n,n) | 定义 2D 转换,使用六个值的矩阵。 |
translate(x,y) | 定义 2D 转换,沿着 X 和 Y 轴移动元素。 |
translateX(n) | 定义 2D 转换,沿着 X 轴移动元素。 |
translateY(n) | 定义 2D 转换,沿着 Y 轴移动元素。 |
scale(x,y) | 定义 2D 缩放转换,改变元素的宽度和高度。 |
scaleX(n) | 定义 2D 缩放转换,改变元素的宽度。 |
scaleY(n) | 定义 2D 缩放转换,改变元素的高度。 |
rotate(angle) | 定义 2D 旋转,在参数中规定角度。 |
skew(x-angle,y-angle) | 定义 2D 倾斜转换,沿着 X 和 Y 轴。 |
skewX(angle) | 定义 2D 倾斜转换,沿着 X 轴。 |
skewY(angle) | 定义 2D 倾斜转换,沿着 Y 轴。 |
3D转换属性
下表列出了全部的转换属性:
属性 | 描述 | CSS |
---|---|---|
transform | 向元素应用 2D 或 3D 转换。 | 3 |
transform-origin | 容许你改变被转换元素的位置。 | 3 |
transform-style | 规定被嵌套元素如何在 3D 空间中显示。 | 3 |
perspective | 规定 3D 元素的透视效果。 | 3 |
perspective-origin | 规定 3D 元素的底部位置。 | 3 |
backface-visibility | 定义元素在不面对屏幕时是否可见。 | 3 |
3D 转换方法
函数 | 描述 |
---|---|
matrix3d(n,n,n,n,n,n, n,n,n,n,n,n,n,n,n,n) |
定义 3D 转换,使用 16 个值的 4x4 矩阵。 |
translate3d(x,y,z) | 定义 3D 转化。 |
translateX(x) | 定义 3D 转化,仅使用用于 X 轴的值。 |
translateY(y) | 定义 3D 转化,仅使用用于 Y 轴的值。 |
translateZ(z) | 定义 3D 转化,仅使用用于 Z 轴的值。 |
scale3d(x,y,z) | 定义 3D 缩放转换。 |
scaleX(x) | 定义 3D 缩放转换,经过给定一个 X 轴的值。 |
scaleY(y) | 定义 3D 缩放转换,经过给定一个 Y 轴的值。 |
scaleZ(z) | 定义 3D 缩放转换,经过给定一个 Z 轴的值。 |
rotate3d(x,y,z,angle) | 定义 3D 旋转。 |
rotateX(angle) | 定义沿 X 轴的 3D 旋转。 |
rotateY(angle) | 定义沿 Y 轴的 3D 旋转。 |
rotateZ(angle) | 定义沿 Z 轴的 3D 旋转。 |
perspective(n) | 定义 3D 转换元素的透视视图。 |
过渡属性
下表列出了全部的过渡属性:
属性 | 描述 | CSS |
---|---|---|
transition | 简写属性,用于在一个属性中设置四个过渡属性。 | 3 |
transition-property | 规定应用过渡的 CSS 属性的名称。 | 3 |
transition-duration | 定义过渡效果花费的时间。默认是 0。 | 3 |
transition-timing-function | 规定过渡效果的时间曲线。默认是 "ease"。 | 3 |
transition-delay | 规定过渡效果什么时候开始。默认是 0。 | 3 |
div
{
transition-property: width;
transition-duration:1s;
transition-timing-function: linear;
transition-delay:2s;
/* Safari */
-webkit-transition-property:width;
-webkit-transition-duration:1s;
-webkit-transition-timing-function:linear;
-webkit-transition-delay:2s;
}
要建立CSS3动画,你须要了解@keyframes规则。@keyframes规则是建立动画。 @keyframes规则内指定一个CSS样式和动画将逐步从目前的样式更改成新的样式。
当动画为 25% 及 50% 时改变背景色,而后当动画 100% 完成时再次改变:
@keyframes myfirst
{
0%{background: red;}
25%{background: yellow;}
50%{background: blue;}
100%{background: green;}
}
下面的表格列出了 @keyframes 规则和全部动画属性:
属性 | 描述 | CSS |
---|---|---|
@keyframes | 规定动画。 | 3 |
animation | 全部动画属性的简写属性,除了 animation-play-state 属性。 | 3 |
animation-name | 规定 @keyframes 动画的名称。 | 3 |
animation-duration | 规定动画完成一个周期所花费的秒或毫秒。默认是 0。 | 3 |
animation-timing-function | 规定动画的速度曲线。默认是 "ease"。 | 3 |
animation-delay | 规定动画什么时候开始。默认是 0。 | 3 |
animation-iteration-count | 规定动画被播放的次数。默认是 1。 | 3 |
animation-direction | 规定动画是否在下一周期逆向地播放。默认是 "normal"。 | 3 |
animation-play-state | 规定动画是否正在运行或暂停。默认是 "running"。 | 3 |
div
{
animation-name: myfirst;
animation-duration:5s;
animation-timing-function: linear;
animation-delay:2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-play-state: running;
/* Safari and Chrome: */
-webkit-animation-name: myfirst;
-webkit-animation-duration:5s;
-webkit-animation-timing-function: linear;
-webkit-animation-delay:2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-play-state: running;
}
下表列出了全部 CSS3 的多列属性:
属性 | 描述 |
---|---|
column-count | 指定元素应该被分割的列数。 |
column-fill | 指定如何填充列 |
column-gap | 指定列与列之间的间隙 |
column-rule | 全部 column-rule-* 属性的简写 |
column-rule-color | 指定两列间边框的颜色 |
column-rule-style | 指定两列间边框的样式 |
column-rule-width | 指定两列间边框的厚度 |
column-span | 指定元素要跨越多少列 |
column-width | 指定列的宽度 |
columns | 设置 column-width 和 column-count 的简写 |
在 CSS3 中, 增长了一些新的用户界面特性来调整元素尺寸,框尺寸和外边框,主要包括如下用户界面属性:
resize属性指定一个元素是否应该由用户去调整大小。
box-sizing 属性容许您以确切的方式定义适应某个区域的具体内容。
outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓。
CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面须要适应不一样的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。
引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。
下表列出了在弹性盒子中经常使用到的属性:
属性 | 描述 |
---|---|
display | 指定 HTML 元素盒子类型。 |
flex-direction | 指定了弹性容器中子元素的排列方式 |
justify-content | 设置弹性盒子元素在主轴(横轴)方向上的对齐方式。 |
align-items | 设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。 |
flex-wrap | 设置弹性盒子的子元素超出父容器时是否换行。 |
align-content | 修改 flex-wrap 属性的行为,相似 align-items, 但不是设置子元素对齐,而是设置行对齐 |
flex-flow | flex-direction 和 flex-wrap 的简写 |
order | 设置弹性盒子的子元素排列顺序。 |
align-self | 在弹性子元素上使用。覆盖容器的 align-items 属性。 |
flex | 设置弹性盒子的子元素如何分配空间。 |
从 CSS 版本 2 开始,就能够经过媒体类型在 CSS 中得到媒体支持。若是您曾经使用过打印样式表,那么您可能已经使用过媒体类型。清单 1 展现了一个示例。
清单 1. 使用媒体类型
<linkrel="stylesheet"type="text/css"href="site.css"media="screen"/>
<linkrel="stylesheet"type="text/css"href="print.css"media="print"/>
清单 2. 媒体查询规则
@media all and(min-width:800px){...}
@media all
是媒体类型,也就是说,将此 CSS 应用于全部媒体类型。(min-width:800px)
是包含媒体查询的表达式,若是浏览器的最小宽度为 800 像素,则会告诉浏览器只运用下列 CSS。清单 3. and
条件
@media(min-width:800px)and(max-width:1200px)and(orientation:portrait){...}
清单 4. or
关键词
@media(min-width:800px)or(orientation:portrait){...}
清单 5. 使用 not
@media(not min-width:800px){...}