CSS3 2D 转换
CSS3 转换
CSS3转换,我们可以移动,比例化,镜像,旋转,和拉伸元素。
接下里您将会学到关于CSS3 2D转换的内容,
当您学到一个新知识的时候,最好能够自己进行操作一下,能够让您真正掌握这一知识点!
它是如何工作?
变换的效果,让某个元素改变形状,大小和位置。
您可以转换您使用2D或3D元素。
浏览器支持
表格中的数字表示支持该属性的第一个浏览器版本号。
紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。
属性 | |||||
---|---|---|---|---|---|
transform | 36.0 4.0 -webkit- | 10.0 9.0 -ms- | 16.0 3.5 -moz- | 3.2 -webkit- | 23.0 15.0 -webkit- 12.1 10.5 -o- |
transform-origin (two-value syntax) | 36.0 4.0 -webkit- | 10.0 9.0 -ms- | 16.0 3.5 -moz- | 3.2 -webkit- | 23.0 15.0 -webkit- 12.1 10.5 -o- |
Internet Explorer 10, Firefox, 和 Opera支持transform 属性.
Chrome 和 Safari 要求前缀 -webkit- 版本.
注意: IE 9 要求前缀 -ms- 版本.
2D 转换
在本章您将了解2D变换方法:
translate()
rotate()
scale()
skew()
matrix()
在下一章中您将了解3D转换。
代码如下:
<!DOCTPYE html>
<html lang="zh">
<head>
<link rel="icon" href="beyond.jpg" type="image/x-icon"/>
<meta charset="UTF-8">
<meta name="author" content="beyond">
<meta http-equiv="refresh" content="520">
<meta name="description" content="免费零基础教程">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
<meta name="keywords" content="HTML,CSS,JAVASCRIPT">
<title>beyondの心中の动漫神作</title>
<link rel="stylesheet" type="text/css" href="beyondbasestylewhite3.css">
<!--[if lt IE 9]>
<script src="//apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
<style type="text/css">
body{
font-size: 100%;
/*background-image: url("sakura4.png");
background-repeat: no-repeat;
background-position: center center;*/
/*声明margin和padding是个好习惯*/
margin: 0;
padding: 0;
}
div {
color: white;
margin: 50 auto;
width: 200px;
height: 100px;
background-color: Teal;
/*IE 9*/
-ms-transform:rotate(30deg);
/*Safari and Chrome*/
-webkit-transform:rotate(30deg);
/*标准的写最后面*/
transform:rotate(30deg);
}
</style>
</head>
<body>
<h1 style="color:white;text-shadow:2px 2px 4px #000;letter-spacing:5px;" class="sgcontentcolor sgcenter">
未闻花名
</h1>
<div>
transform属性演示
</div>
<br/>
<p class="sgcontentcolor sgcenter" style="clear:left;">
<b>注意:</b>transform属性可进行2D变换<br/>
Safari和Chrome前面加上-webkit-<br/>
IE9前面加上-ms-
</p>
<footer id="copyright" style="clear:both;">
<p style="font-size:14px;text-align:center;font-style:italic;">
Copyright © <a id="author">2018</a> Powered by <a id="author">beyond</a>
</p>
</footer>
</body>
</html>
效果如下:
核心代码:
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}
translate() 方法
translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
代码如下:
<!DOCTPYE html>
<html lang="zh">
<head>
<link rel="icon" href="beyond.jpg" type="image/x-icon"/>
<meta charset="UTF-8">
<meta name="author" content="beyond">
<meta http-equiv="refresh" content="520">
<meta name="description" content="免费零基础教程">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
<meta name="keywords" content="HTML,CSS,JAVASCRIPT">
<title>beyondの心中の动漫神作</title>
<link rel="stylesheet" type="text/css" href="beyondbasestylewhite3.css">
<!--[if lt IE 9]>
<script src="//apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
<style type="text/css">
body{
font-size: 100%;
/*background-image: url("sakura4.png");
background-repeat: no-repeat;
background-position: center center;*/
/*声明margin和padding是个好习惯*/
margin: 0;
padding: 0;
}
div {
color: white;
width: 100px;
height: 75px;
background-color: Teal;
}
/*在原始的位置上,发生偏移*/
div#id_div_2 {
/*IE 9*/
-ms-transform:translate(50px,100px);
/*Safari and Chrome*/
-webkit-transform:translate(50px,100px);
/*标准的写最后面*/
transform:translate(50px,100px);
}
</style>
</head>
<body>
<h1 style="color:white;text-shadow:2px 2px 4px #000;letter-spacing:5px;" class="sgcontentcolor sgcenter">
未闻花名
</h1>
<div>
div_1
</div>
<hr/>
<div id="id_div_2">
div_2
</div>
<br/>
<p class="sgcontentcolor sgcenter" style="clear:left;">
<b>注意:</b>transform属性可进行2D变换<br/>
Safari和Chrome前面加上-webkit-<br/>
IE9前面加上-ms-
</p>
<footer id="copyright" style="clear:both;">
<p style="font-size:14px;text-align:center;font-style:italic;">
Copyright © <a id="author">2018</a> Powered by <a id="author">beyond</a>
</p>
</footer>
</body>
</html>
效果如下:
核心代码:
{
transform: translate(50px,100px);
-ms-transform: translate(50px,100px); /* IE 9 */
-webkit-transform: translate(50px,100px); /* Safari and Chrome */
}
translate值(50px,100px)是从左边元素移动50个像素,并从顶部移动100像素。
rotate() 方法
rotate()方法,在一个给定度数顺时针旋转的元素。
负值是允许的,负值就是元素逆时针旋转。
代码如下:
div {
color: white;
width: 100px;
height: 75px;
background-color: Teal;
}
/*在原始的位置上,发生旋转*/
div#id_div_2 {
/*IE 9*/
-ms-transform:rotate(45deg);
/*Safari and Chrome*/
-webkit-transform:rotate(45deg);
/*标准的写最后面*/
transform:rotate(45deg);
}
</style>
效果如下:
核心代码:
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}
rotate值(30deg)元素顺时针旋转30度。
scale() 方法 以中心点进行缩放
scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数
代码如下:
div {
color: white;
width: 100px;
height: 75px;
background-color: Teal;
}
/*在原始的位置上,发生旋转*/
div#id_div_2 {
/*IE 9*/
-ms-transform:scale(2,2);
/*Safari and Chrome*/
-webkit-transform:scale(2,2);
/*标准的写最后面*/
transform:scale(2,2);
}
</style>
效果如下:
核心代码: 以中心点缩放,宽,高
{
transform: scale(2,2);
-ms-transform: scale(2,2); /* IE 9 */
-webkit-transform: scale(2,2); /* Safari and Chrome */
}
scale(2,2.0)转变宽度为原来的大小的2倍,和其原始大小2.0倍的高度。
skew() 方法
skew()方法,该元素会根据横向(X轴)和垂直(Y轴)线参数给定角度
代码如下:
div {
color: white;
width: 100px;
height: 100px;
background-color: Teal;
}
/*在原始的位置上,发生旋转
绕中心点,沿x方向22.5deg, y方向45deg;*/
div#id_div_2 {
background-color: rgba(255,181,197,0.8);
/*IE 9*/
-ms-transform:skew(22.5deg,45deg);
/*Safari and Chrome*/
-webkit-transform:skew(22.5deg,45deg);
/*标准的写最后面*/
transform:skew(22.5deg,45deg);
}
效果如下:
绕中心点,只沿x方向 skew 45deg效果如下:
绕中心点,只沿y方向 skew 45deg效果如下:
核心代码:
{
transform: skew(22.5deg,45deg);
-ms-transform: skew(22.5deg,45deg); /* IE 9 */
-webkit-transform: skew(22.5deg,45deg); /* Safari and Chrome */
}
skew(22.5deg,45deg) 元素在X轴倾斜22.5度,和Y轴上45度。
matrix() 方法
matrix()方法和2D变换方法合并成一个。
matrix 方法有六个参数(a,b,c,d,e,f),包含旋转,缩放,移动(平移)和倾斜功能。
代码如下:
<!DOCTPYE html>
<html lang="zh">
<head>
<link rel="icon" href="beyond.jpg" type="image/x-icon"/>
<meta charset="UTF-8">
<meta name="author" content="beyond">
<meta http-equiv="refresh" content="520">
<meta name="description" content="免费零基础教程">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
<meta name="keywords" content="HTML,CSS,JAVASCRIPT">
<title>beyondの心中の动漫神作</title>
<link rel="stylesheet" type="text/css" href="beyondbasestylewhite3.css">
<!--[if lt IE 9]>
<script src="//apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
<style type="text/css">
body{
font-size: 100%;
/*background-image: url("sakura4.png");
background-repeat: no-repeat;
background-position: center center;*/
/*声明margin和padding是个好习惯*/
margin: 0;
padding: 0;
}
div {
color: white;
width: 100px;
height: 100px;
background-color: Teal;
}
/*在原始的位置上,旋转30度*/
div#id_div_2 {
background-color: rgba(255,181,197,0.8);
/*IE 9*/
-ms-transform:matrix(0.866025,0.5,-0.5,0.866025,0,0);
/*Safari and Chrome*/
-webkit-transform:matrix(0.866025,0.5,-0.5,0.866025,0,0);
/*标准的写最后面*/
transform:matrix(0.866025,0.5,-0.5,0.866025,0,0);
}
</style>
</head>
<body>
<h1 style="color:white;text-shadow:2px 2px 4px #000;letter-spacing:5px;" class="sgcontentcolor sgcenter">
未闻花名
</h1>
<div>
div_1
</div>
<hr/>
<div id="id_div_2">
div_2
</div>
<span>在原始的位置上,使用matrix(abcdef)绕中心点,旋转30度</span>
<br/>
<p class="sgcontentcolor sgcenter" style="clear:left;">
<b>注意:</b>transform属性可进行2D变换<br/>
Safari和Chrome前面加上-webkit-<br/>
IE9前面加上-ms-
</p>
<footer id="copyright" style="clear:both;">
<p style="font-size:14px;text-align:center;font-style:italic;">
Copyright © <a id="author">2018</a> Powered by <a id="author">beyond</a>
</p>
</footer>
</body>
</html>
效果如下:
利用matrix()方法旋转div元素30°
{
transform:matrix(0.866,0.5,-0.5,0.866,0,0);
-ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
-webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
}
新转换属性
以下列出了所有的转换属性:
Property | 描述 | CSS |
---|---|---|
transform | 适用于2D或3D转换的元素 | 3 |
transform-origin | 允许您更改转化元素位置 | 3 |
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 轴。 |
熟练使用CSS3 2D转换方法,能够让您在设计中游刃有余
矩阵补充:
css3增加了transform功能,
用它来配合transition可以不用js就能够实现优美的动画效果,
css3提供了四种变换方法位移,缩放,旋转,斜切
matrix功能实现
其实并不难,用到的都是简单的矩阵
旋转、压缩、斜切等,本质上都是应用的matrix()方法实现的(修改matrix()方法固定几个值),
只是类似于transform:rotate这种表现形式,我们更容易理解记忆与使用。
写法是这样的
* transform: matrix(a,b,c,d,e,f);
什么意思呢?
ax+cy+e表示变换后的水平坐标,
bx+dy+f 表示变换后的垂直位置。
位移(displace) 沿x,y都平移100
* transform: matrix(1, 0, 0, 1, 100, 100);
/* a=1, b=0, c=0, d=1, e=100, f=100 */
变换后:???Excuse Me???
x坐标 : ax+cy+e = 10+00+30 =30,
y坐标 : bx+dy+f = 00+10+30 =30.
缩放(scale) x放大3倍, y缩小0.5
* transform: matrix(3, 0, 0, 0.5, 0, 0);
其实就是这样一个公式
*比例是 s,则有matrix(s, 0, 0, s, 0, 0);第一个s代表x轴,第二个s代表y轴。
x' = ax+cy+e = sx+0y+0 = s*x;
y' = bx+dy+f = 0x+sy+0 = s*y;
旋转(rotate) ???Excuse Me???
// 旋转30度
* transform: matrix(0.866025,0.500000,-0.500000,0.866025,0,0);
matrix(cosθ,sinθ,-sinθ,cosθ,0,0)
x' = xcosθ-ysinθ+0 = xcosθ-ysinθ
y' = xsinθ+ycosθ+0 = xsinθ+ycosθ
拉伸(skew) ???Excuse Me???
* transform: matrix(1,0,0.75,1,0,0);
matrix(1,tan(θy),tan(θx),1,0,0)
x' = x+ytan(θx)+0 = x+ytan(θx)
y' = xtan(θy)+y+0 = xtan(θy)+y
3D 转换
CSS3 允许您使用 3D 转换来对元素进行格式化。
点击下面的元素,您可以看到 2D 转换与 3D 转换之间的不同之处,根据自己的需求选择哪一种转换:
浏览器支持
表格中的数字表示支持该属性的第一个浏览器版本号。
紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。
属性 | 谷歌浏览器 | ie浏览器 | 搜狐浏览器 | webkit浏览器 | opera浏览器 |
---|---|---|---|---|---|
transform | 36.0 12.0 -webkit- | 10.0 | 16.0 10.0 -moz- | 4.0 -webkit- | 23.0 15.0 -webkit- |
transform-origin (three-value syntax) | 36.0 12.0 -webkit- | 10.0 | 16.0 10.0 -moz- | 4.0 -webkit- | 23.0 15.0 -webkit- |
transform-style | 36.0 12.0 -webkit- | 11.0 | 16.0 10.0 -moz- | 4.0 -webkit- | 23.0 15.0 -webkit- |
perspective | 36.0 12.0 -webkit- | 10.0 | 16.0 10.0 -moz- | 4.0 -webkit- | 23.0 15.0 -webkit- |
perspective-origin | 36.0 12.0 -webkit- | 10.0 | 16.0 10.0 -moz- | 4.0 -webkit- | 23.0 15.0 -webkit- |
backface-visibility | 36.0 12.0 -webkit- | 10.0 | 16.0 10.0 -moz- | 4.0 -webkit- | 23.0 15.0 -webkit- |
rotateX() 方法
rotateX()方法,围绕其在一个给定度数X轴旋转的元素。
注意: IE 9 (以及更早版本的浏览器) 和 Opera 不支持 rotateX 方法.
代码如下:
/*在原始的位置上,3D旋转X方向45度
IE9及更早版本 和Opera不支持rotateX属性*/
div#id_div_2 {
background-color: rgba(255,181,197,0.8);
/*Safari and Chrome*/
-webkit-transform:rotateX(45deg);
/*标准的写最后面*/
transform:rotateX(45deg);
}
效果如下:
rotateY() 方法
rotateY()方法,围绕其在一个给定度数绕Y轴旋转的元素
代码如下:
/*在原始的位置上,3D旋转Y方向45度
IE9及更早版本 和Opera不支持rotateY属性*/
div#id_div_2 {
background-color: rgba(255,181,197,0.8);
/*Safari and Chrome*/
-webkit-transform:rotateY(45deg);
/*标准的写最后面*/
transform:rotateY(45deg);
}
效果如下:
转换属性
下表列出了CSS3所有的转换属性:
属性 | 描述 | 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 转换元素的透视视图。 |
通过学习3D转化,可以让您的样式更加立体化,W3Cschool建议您最好能够收藏本篇文章,或者保存到本地,方便以后查找!
CSS3 过渡
CSS3 过渡
CSS3中,我们为了添加某种效果可以从一种样式转变到另一个的时候,无需使用Flash动画或JavaScript。
浏览器支持
表格中的数字表示支持该属性的第一个浏览器版本号。
紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。
属性 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
transition | 26.0 4.0 -webkit- | 10.0 | 16.0 4.0 -moz- | 6.1 3.1 -webkit- | 12.1 10.5 -o- |
transition-delay | 26.0 4.0 -webkit- | 10.0 | 16.0 4.0 -moz- | 6.1 3.1 -webkit- | 12.1 10.5 -o- |
transition-duration | 26.0 4.0 -webkit- | 10.0 | 16.0 4.0 -moz- | 6.1 3.1 -webkit- | 12.1 10.5 -o- |
transition-property | 26.0 4.0 -webkit- | 10.0 | 16.0 4.0 -moz- | 6.1 3.1 -webkit- | 12.1 10.5 -o- |
transition-timing-function | 26.0 4.0 -webkit- | 10.0 | 16.0 4.0 -moz- | 6.1 3.1 -webkit- | 12.1 10.5 -o- |
它是如何工作?
CSS3 过渡是元素从一种样式 逐渐改变为 另一种的效果。
要实现这一点,必须给transition属性赋值2项内容:
指定要添加效果的CSS的属性名称(如width)
指定效果的持续时间(如2秒)。
核心代码:
应用于宽度属性的过渡效果,时长为 2 秒:
{
transition: width 2s;
-webkit-transition: width 2s; /* Safari */
}
注意: 如果未指定的变化的时间长度,transition属性将没有任何效果,因为默认值是0。
当指定的CSS属性的值 更改时,动画效果就会发生。
一个典型CSS属性的变化时机是:当用户鼠标放在(hover)一个元素上时
注意:该实例无法在 IE 9 及更早 IE 版本上工作。
代码如下:
<!DOCTPYE html>
<html lang="zh">
<head>
<link rel="icon" href="beyond.jpg" type="image/x-icon"/>
<meta charset="UTF-8">
<meta name="author" content="beyond">
<meta http-equiv="refresh" content="520">
<meta name="description" content="免费零基础教程">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
<meta name="keywords" content="HTML,CSS,JAVASCRIPT">
<title>beyondの心中の动漫神作</title>
<link rel="stylesheet" type="text/css" href="beyondbasestylewhite3.css">
<!--[if lt IE 9]>
<script src="//apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
<style type="text/css">
body{
font-size: 100%;
/*background-image: url("sakura4.png");
background-repeat: no-repeat;
background-position: center center;*/
/*声明margin和padding是个好习惯*/
margin: 0;
padding: 0;
}
div {
margin: auto;
width: 100px;
height: 100px;
background-color: Teal;
/*属性动画*/
transition:width 1s;
/*Safari*/
-webkit-transition:width 1s;
}
/*当属性值大小变化时,会触发动画*/
div:hover {
width: 300px;
}
</style>
</head>
<body>
<h1 style="color:white;text-shadow:2px 2px 4px #000;letter-spacing:5px;" class="sgcontentcolor sgcenter">
未闻花名
</h1>
<div></div>
<br/>
<p class="sgcontentcolor sgcenter" style="clear:left;">
<b>注意:</b>transition属性可进行属性动画<br/>
IE9及更早版本 不支持transition属性
</p>
<footer id="copyright" style="clear:both;">
<p style="font-size:14px;text-align:center;font-style:italic;">
Copyright © <a id="author">2018</a> Powered by <a id="author">beyond</a>
</p>
</footer>
</body>
</html>
效果如下:
核心代码:
规定当鼠标指针悬浮(:hover)于 <div>元素上时:
{
width:300px;
}
注意: 当鼠标光标移动hover到该元素时,属性动画会逐渐改变它原有样式。
多项改变
要添加多个样式的变换效果,添加的属性由逗号分隔
注意:该实例无法在 Internet Explorer 9 及更早 IE 版本上工作。
代码如下:
div {
margin: auto;
width: 100px;
height: 100px;
color: #333;
font-weight: bold;
background-color: pink;
/*属性动画*/
transition:width 1s,height 1s,transform 1s,color 1s,background-color 1s;
/*Safari*/
-webkit-transition:width 1s,height 1s,-webkit-transform 1s,color 1s,background-color 1s;
}
/*当属性值大小变化时,会触发动画*/
div:hover {
width: 200px;
height: 200px;
transform:rotate(180deg);
/*兼容Chrome,Safari,Opear*/
-webkit-transform:rotate(180deg);
color:white;
background-color: Teal;
}
效果如下:
核心代码:
添加了宽度,高度和转换效果:
{
transition: width 2s, height 2s, transform 2s;
-webkit-transition: width 2s, height 2s, -webkit-transform 2s;
}
过渡属性
下表列出了所有的过渡属性:
属性 | 描述 | CSS |
---|---|---|
transition | 简写属性,用于在一个属性中设置四个过渡属性。 | 3 |
transition-property | 规定应用过渡的 CSS 属性的名称。 | 3 |
transition-duration | 定义过渡效果花费的时间。默认是 0,即没有动画效果 | 3 |
transition-timing-function | 规定过渡效果的时间曲线。默认是 "ease"。 | 3 |
transition-delay | 规定过渡效果何时开始。默认是 0,即立即开始,不延迟 | 3 |
下面的两个例子设置所有过渡属性:
注意:该实例无法在 Internet Explorer 9 及更早 IE 版本上工作。
分开单独设置transition属性的代码如下:
div {
margin: auto;
width: 100px;
height: 100px;
background-color: pink;
/*属性动画一个一个分开写*/
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;
}
/*当属性值大小变化时,会触发动画*/
div:hover {
width: 300px;
}
效果如下:
核心代码:
在一个例子中使用所有过渡属性:
{
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;
}
实例
与上面的例子相同的过渡效果,但是使用了简写的 transition 属性:
{
transition: width 1s linear 2s;
/* Safari */
-webkit-transition:width 1s linear 2s;
}
CSS3 动画中最重要的概念 @keyframes 规则
表格中的数字表示支持该属性的第一个浏览器版本号。
@keyframes规则是创建动画。也就是指定动画的运动方式
@keyframes规则内指定一个CSS样式和动画 将逐步从 目前的样式 更改为 新的样式。
浏览器支持
Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。
紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。
属性 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
@keyframes | 43.0 4.0 -webkit- | 10.0 | 16.0 5.0 -moz- | 9.0 4.0 -webkit- | 30.0 15.0 -webkit- 12.0 -o- |
animation | 43.0 4.0 -webkit- | 10.0 | 16.0 5.0 -moz- | 9.0 4.0 -webkit- | 30.0 15.0 -webkit- 12.0 -o- |
核心代码 @keyframes 定义一个动画
{
from {background: red;}
to {background: yellow;}
}
@-webkit-keyframes beyondAnimation /* Safari and Chrome */
{
from {background: red;}
to {background: yellow;}
}
CSS3 动画
当在@keyframe创建了一个动画之后,
还需要把它绑定到一个选择器上(意思就是指定哪一个div元素花多长时间,去执行那个动画),
否则动画不会有任何效果。
指定至少这两个CSS3的动画属性绑定向一个选择器:
定义好的那个动画的名称
规定需要多长时间执行完动画
核心代码: animation属性
把 "beyondAnimation" 动画捆绑到 div 元素,时长:5 秒:
{
animation: beyondAnimation 5s;
-webkit-animation: beyondAnimation 5s; /* Safari and Chrome */
}
注意: 您必须定义动画的名称和动画的持续时间。
如果省略的持续时间,动画将无法运行,因为默认值是0。
注意: 该实例在 IE 9 及更早 IE 版本是无效的。
完整代码如下:
<!DOCTPYE html>
<html lang="zh">
<head>
<link rel="icon" href="beyond.jpg" type="image/x-icon"/>
<meta charset="UTF-8">
<meta name="author" content="beyond">
<meta http-equiv="refresh" content="520">
<meta name="description" content="免费零基础教程">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
<meta name="keywords" content="HTML,CSS,JAVASCRIPT">
<title>beyondの心中の动漫神作</title>
<link rel="stylesheet" type="text/css" href="beyondbasestylewhite3.css">
<!--[if lt IE 9]>
<script src="//apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
<style type="text/css">
body{
font-size: 100%;
/*background-image: url("sakura4.png");
background-repeat: no-repeat;
background-position: center center;*/
/*声明margin和padding是个好习惯*/
margin: 0;
padding: 0;
}
div {
margin: auto;
width: 100px;
height: 100px;
background-color: pink;
/*animation属性绑定动画名称及运动时长*/
animation:beyondAnimation 2s;
/*兼容Safari and Chrome*/
-webkit-animation:beyondAnimation 2s;
}
/*@keyframes可自定义属性动画
animation属性绑定自定义的动画名称及运动时长
IE9及更早版本 不支持animation属性*/
@keyframes beyondAnimation {
/*0%时的状态*/
from {background-color: pink;}
/*100%时的状态*/
to {background-color: Teal;}
}
/*兼容 Safari and Chrome*/
@-webkit-keyframes beyondAnimation {
from {background-color: pink;}
to {background-color: Teal;}
}
</style>
</head>
<body>
<h1 style="color:white;text-shadow:2px 2px 4px #000;letter-spacing:5px;" class="sgcontentcolor sgcenter">
未闻花名
</h1>
<div></div>
<br/>
<p class="sgcontentcolor sgcenter" style="clear:left;">
<b>注意:</b>@keyframes可自定义属性动画<br/>
animation属性绑定自定义的动画名称及运动时长<br/>
IE9及更早版本 不支持animation属性<br/>
</p>
<footer id="copyright" style="clear:both;">
<p style="font-size:14px;text-align:center;font-style:italic;">
Copyright © <a id="author">2018</a> Powered by <a id="author">beyond</a>
</p>
</footer>
</body>
</html>
效果如下:
CSS3动画是什么?
动画是使元素从一种样式 逐渐变化为 另一种样式的效果。
您可以改变任意多的样式, 任意多的次数。
请用百分比来规定变化发生的时间,
或用关键词 "from" 和 "to",等同于 0% 和 100%。
0% 是动画的开始,100% 是动画的完成。
为了得到最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。
注意: 该实例在 IE 9 及更早 IE 版本是无效的。
代码如下:
div {
margin: auto;
width: 100px;
height: 100px;
background-color: red;
/*animation属性绑定动画名称及运动时长*/
animation:beyondAnimation 7s;
/*兼容Safari and Chrome*/
-webkit-animation:beyondAnimation 7s;
/*兼容Firefox*/
-moz-animation:beyondAnimation 7s;
/*兼容Opera*/
-o-animation:beyondAnimation 7s;
}
/*@keyframes可自定义属性动画
animation属性绑定自定义的动画名称及运动时长
IE9及更早版本 不支持animation属性*/
@keyframes beyondAnimation {
0% {background-color: red;}
16.66% {background-color: orange;}
33.33% {background-color: yellow;}
50% {background-color: green;}
66.66% {background-color: blue;}
83.33% {background-color: indigo;}
100% {background-color: violet;}
}
/*兼容 Safari and Chrome*/
@-webkit-keyframes beyondAnimation {
0% {background-color: red;}
16.66% {background-color: orange;}
33.33% {background-color: yellow;}
50% {background-color: green;}
66.66% {background-color: blue;}
83.33% {background-color: indigo;}
100% {background-color: violet;}
}
/*兼容 Firefox*/
@-moz-keyframes beyondAnimation {
0% {background-color: red;}
16.66% {background-color: orange;}
33.33% {background-color: yellow;}
50% {background-color: green;}
66.66% {background-color: blue;}
83.33% {background-color: indigo;}
100% {background-color: violet;}
}
/*兼容 Opera*/
@-o-keyframes beyondAnimation {
0% {background-color: red;}
16.66% {background-color: orange;}
33.33% {background-color: yellow;}
50% {background-color: green;}
66.66% {background-color: blue;}
83.33% {background-color: indigo;}
100% {background-color: violet;}
}
效果如下:
核心代码:
当动画为 25% 及 50% 时改变背景色,然后当动画 100% 完成时再次改变:
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}
@-webkit-keyframes beyondAnimation /* Safari and Chrome */
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}
颜色与位置同时改变的示例代码如下:
注意: 该实例在 IE 9 及更早 IE 版本是无效的
代码如下:
div {
width: 72px;
height: 72px;
background-color: red;
/*定位:相对于自己原本的位置*/
position: relative;
/*animation属性绑定动画名称及运动时长*/
animation:beyondAnimation 5s;
/*兼容Safari and Chrome*/
-webkit-animation:beyondAnimation 5s;
/*兼容Firefox*/
-moz-animation:beyondAnimation 5s;
/*兼容Opera*/
-o-animation:beyondAnimation 5s;
}
/*@keyframes可自定义属性动画
animation属性绑定自定义的动画名称及运动时长
IE9及更早版本 不支持animation属性*/
@keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Safari and Chrome*/
@-webkit-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Firefox*/
@-moz-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Opera*/
@-o-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
效果如下:
核心代码:
改变背景色和位置:
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
@-webkit-keyframes beyondAnimation /* Safari and Chrome */
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
CSS3的动画属性
下面的表格列出了 @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 |
下面两个例子设置所有动画属性
注意: 该实例在 IE 9 及更早 IE 版本是无效的。
代码如下:
div {
width: 72px;
height: 72px;
background-color: red;
/*定位:相对于自己原本的位置*/
position: relative;
/*animation属性绑定动画名称及运动时长*/
animation-name:beyondAnimation;
animation-duration:5s;
/*ease还是linear*/
animation-timing-function:ease;
animation-delay:2s;
/*重复次数:无限重复*/
animation-iteration-count:infinite;
/*是否反转*/
animation-direction:alternate;
/*动画是暂停还是播放*/
animation-play-state:running;
/*兼容Safari and Chrome*/
/*animation属性绑定动画名称及运动时长*/
-webkit-animation-name:beyondAnimation;
-webkit-animation-duration:5s;
/*ease还是linear*/
-webkit-animation-timing-function:ease;
-webkit-animation-delay:2s;
/*重复次数:无限重复*/
-webkit-animation-iteration-count:infinite;
/*是否反转*/
-webkit-animation-direction:alternate;
/*动画是暂停还是播放*/
-webkit-animation-play-state:running;
}
/*@keyframes可自定义属性动画
animation属性绑定自定义的动画名称及运动时长
IE9及更早版本 不支持animation属性*/
@keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Safari and Chrome*/
@-webkit-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Firefox*/
@-moz-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Opera*/
@-o-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
效果如下:
核心代码:
运行beyondAnimation动画,设置所有的属性:
{
animation-name: beyondAnimation;
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: beyondAnimation;
-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;
}
注意: 该实例在 IE 9 及更早 IE 版本是无效的。
简写属性,代码如下:
div {
width: 72px;
height: 72px;
background-color: red;
/*定位:相对于自己原本的位置*/
position: relative;
/*animation属性绑定动画名称及运动时长*/
animation:beyondAnimation 5s ease 2s infinite alternate;
/*兼容Safari and Chrome*/
-webkit-animation:beyondAnimation 5s ease 2s infinite alternate;
/*兼容Firefox*/
-moz-animation:beyondAnimation 5s ease 2s infinite alternate;
/*兼容Opera*/
-o-animation:beyondAnimation 5s ease 2s infinite alternate;
}
/*@keyframes可自定义属性动画
animation属性绑定自定义的动画名称及运动时长
IE9及更早版本 不支持animation属性*/
@keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Safari and Chrome*/
@-webkit-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Firefox*/
@-moz-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
/*兼容 Opera*/
@-o-keyframes beyondAnimation {
0% {background-color: red; left:0px; top:0px;}
/*orange + yellow = blend */
25% {background-color: #FECA0A; left:400px; top:0px;}
50% {background-color: green; left:400px; top:100px;}
/*blue + indigo = blend*/
75% {background-color: #1D00B7; left:0px; top:100px;}
100% {background-color: violet; left:0px; top:0px;}
}
效果跟html_352.html的效果一毛一样
核心代码:
与上面的动画相同,但是使用了简写的动画 animation 属性:
{
animation: beyondAnimation 5s linear 2s infinite alternate;
/* Safari and Chrome: */
-webkit-animation: beyondAnimation 5s linear 2s infinite alternate;
}
上面两个例子设置所有动画属性,您最好都看几遍,并且自己操作一下!
未完待续,下一章节,つづく