写网页特效的时候,涉及到2D、3D动画效果,无论是单词仍是一些方法及属性,都不是很清楚,因此整理一下笔记css
1、CSS3 2D转化web
CSS3 转换能够对元素进行移动、缩放、转动、拉长或拉伸。浏览器
为了兼容不一样版本的浏览器,要增长前缀函数
-webkit-transform: rotate(30deg) /* Safari and Chrome */;
-moz-transform: rotate(30deg) /* Firefox */;
-ms-transform: rotate(30deg) /* IE 9 */;
-o-transform: rotate(30deg)/* opera */;
transform: rotate(30deg);
transrorm的方法有:translate() rotate() scale() skew() matrix()动画
一、translate() 方法 根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。spa
eg: translate(50px,100px)是从左边元素移动50个像素,并从顶部移动100像素。3d
二、rotate() 方法 在一个给定度数顺时针旋转的元素。负值是逆时针旋转元素。orm
eg: rotate(30deg) 元素顺时针旋转30度。blog
三、scale() 方法 该元素增长或减小的大小,取决于宽度(X轴)和高度(Y轴)的参数:animation
eg: scale(2,3)转变宽度为原来的大小的2倍,和其原始大小3倍的高度。
四、skew() 方法
语法:
transform:skew(<angle> [,<angle>]);
包含两个参数值,分别表示X轴和Y轴倾斜的角度,若是第二个参数为空,则默认为0,参数为负表示向相反的方向倾斜。
五、matrix() 方法和2D变换方法合并成一个。
maxtrix方法有个参数,包含旋转、缩放、移动(平移)和倾斜功能。
通常来讲,原点默认为元素的中心点,可是也能够经过 transform-origin:50% 50%; 这里的50% 50%表示的就是中心默认的位置。
2、CSS3 3D转化
transrorm属性就是分别针对x,y,z进行设置。3d的坐标系,x轴在屏幕上为水平方向,y轴为垂直方向,而z轴为垂直于屏幕的方向。
CSS3中的3D变换主要包括如下几个功能函数:
一、translateZ()和translate3d()
translateZ(z) 让元素沿着Z轴进行位移,当z为负值的时候,元素在Z轴愈来愈远。
translate3d(tx,ty,tz)
二、rotateX()、rotateY()、rotateZ()和rotate3d()
div{transform: rotateX(30deg);transform: rotateY(30deg);transform: rotateZ(30deg);}
rotateX(30deg)是围绕X轴进行旋转30度,(deg)是度数。 相同的 rotateY(30deg)是围绕Y轴进行旋转30度,rotateZ(30deg)是围绕Z轴进行旋转30度。
rotate3d(x,y,z,a)
x(y)(z)取值为0~1的数值,用来描述元素围绕X(Y)(Z)轴旋转的矢量值;
三、scaleZ()和scale3d()
即3D缩放。当scale3d()中x轴和Y轴同为1,即scale3d(1,1,sz),其效果等同于scaleZ(sz)。
四、matrix3d()
matrix3d(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1)
3、 CSS3 过渡
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;
简写:
transition: width 1s linear 2s;
4、CSS3 动画
@keyframes规则是建立动画。 @keyframes规则内指定一个CSS样式和动画将逐步从目前的样式更改成新的样式。当在 @keyframes 建立动画,把它绑定到一个选择器,不然动画不会有任何效果。
请用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%。
0% 是动画的开始,100% 是动画的完成。
@keyframes 规定动画。
animation 全部动画属性的简写属性,除了 animation-play-state 属性。
animation-name 规定 @keyframes 动画的名称。
animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。
animation-timing-function 规定动画的速度曲线。默认是 "ease"。
animation-fill-mode 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
animation-delay 规定动画什么时候开始。默认是 0。
animation-iteration-count 规定动画被播放的次数。默认是 1。
animation-direction 规定动画是否在下一周期逆向地播放。默认是 "normal"。
animation-play-state 规定动画是否正在运行或暂停。默认是 "running"。
@keyframes myfirst
{
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;}
}
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;
}
简化:
div
{
animation: myfirst 5s linear 2s infinite alternate;
}
基础知识就到这里,仍是须要多加练习,正所谓“熟能生巧” 。