CSS3的过渡和动画
过渡和动画都是CSS3
的重要部分,今天有时间,了解些相关内容并记录下。
在开始之前,首先看看CSS3
的转化。
转化
CSS3
的转化分为以下几种:
- translate 移动
- rotate 旋转
- scale 缩放
- skew 倾斜
- matrix 混合
每种转化都还有对应的3d版本
注意:闭合的内联元素不支持转化,过渡和动画:如<span>、<small>、<i>等。可以通过添加样式 display: inline-block 或 display: block 来转化成块级元素。
translate 移动
translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
span {
display: inline-block;
transform: translate(50px,100px); /* 向下移动50像素,向右移动100像素 */
-ms-transform: translate(50px,100px); /* IE 9 */
-webkit-transform: translate(50px,100px); /* Safari and Chrome */
}
rotate 旋转
rotate()方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。
i {
display: block;
transform: rotate(30deg); /* 顺时针旋转30度,负数为逆时针旋转 */
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}
scale 缩放
scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:
div {
display: inline; /*这样设置是缩放不生效 */
transform: scale(2,3); /*长扩大2倍,宽扩大3倍,小于1的小数为缩小 */
-ms-transform:scale(2,3); /* IE 9 */
-webkit-transform: scale(2,3); /* Safari */
transform: scale(2,3); /* 标准语法 */
}
skew 倾斜
skew() 包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。(想象成一根直的柱子,被推歪了...)
- skewX(<angle>);表示只在X轴(水平方向)倾斜。(横着推歪了...)
- skewY(<angle>);表示只在Y轴(垂直方向)倾斜。(从上下压给推歪了...)
div {
transform: skew(30deg,20deg);
-ms-transform: skew(30deg,20deg); /* IE 9 */
-webkit-transform: skew(30deg,20deg); /* Safari and Chrome */
}
matrix 混合
matrix()方法和2D变换方法合并成一个。
matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。
div {
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 */
}
截图总结
2D 版
3D 版
transition 过渡
CSS3中,我们为了添加某种效果可以从一种样式转变到另一个的时候,无需使用Flash动画或JavaScript。
过渡和动画的区别
过渡和动画都可以改变元素的样式,但他们中间也有些不同:
- 过渡针对元素的样式属性,从一种样式转变到另一种,样式按贝塞尔曲线随时间变化,动画针对元素本身,按关键帧改变元素的样式效果
- 过渡比动画简单,当控制的效果也更粗糙,动画更消耗性能,但可以做出更复杂的效果。
总的来说:一般简单的样式使用过渡,实在需要复杂的效果再考虑使用动画
transition 属性
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;
}
/*简写 */
div {
transition: width 1s linear 2s;
/* Safari */
-webkit-transition:width 1s linear 2s;
}
transition 过渡曲线
animate 动画
CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash动画,和JAVAScripts。
动画属性:
动画制作过程
1.通过@keyframes规则创建动画
/*创建动画,字体颜色由红变蓝 */
@keyframes changeColor {
from { color: red; }
to { color: blue; }
}
2.元素绑定动画
span {
display: inline-block; /*内联元素要转成block元素 */
animation: changeColor 1s linear; /*绑定动画,并设置动画时间和执行曲线 */
}
动画还可以使用百分比来更加精细的控制动画流程:
@keyframes changeColor {
0% {color: red;}
25% {color: yellow;}
50% {color: green;}
75% {color: pickle;}
100% {color: blue;}
}
/* Safari 与 Chrome */
@-webkit-keyframes changeColor {
0% {color: red;}
25% {color: yellow;}
50% {color: green;}
75% {color: pickle;}
100% {color: blue;}
}