css3动画特效代码
css3动画特效代码
今天给大家介绍一下CSS3里面的动画特效代码以及我自己写的一个小案列。
一、过渡属性
css3的transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标划过、单击、获得焦点或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值
过渡属性需要触发事件,如:hover(鼠标划过事件)
1. transition-property:检索或设置对象中的参与过渡的属性
说明:属性值可以单独设置否个属性,也可以设置多个属性 width,height; 还可以设置为all(默认值)代表所有属性
2. transition-duration:检索或设置对象过渡的持续时间
说明:设置过度时间(s, ms) 1s = 1000ms
3. transition-delay:检索或设置对象延迟过渡的时间
说明:设置延迟过度时间(s, ms) 属性值为正值的时候是延迟执行过渡效果,为负值的时候是提前只想过渡效果;
4. transition-timing-function:检索或设置对象中过渡的动画类型
说明:
linear 匀速
ease(默认值) 逐渐慢下来
ease-in 加速
ease-out 减速
ease-in-out 先加速后减速
贝塞尔曲线网址:http://cubic-bezier.com/
复合式写法:transition:all 2s 1s linear ;
transition: 2s linear 1s all ;
说明:当使用复合式写法的时候,过度时间和延迟时间的顺序是不能互换的,第一个值代表过度时间,第二个值代表延迟时间;
注:哪个元素发生变形,就把过渡属性添加给谁;建议写给元素初始的效果里;
二、2D transform
transform翻译成汉语具有"变换"或者"改变"的意思。通过此属性具有非常强大的功能,比如可以实现元素的位移、拉伸或者旋转等效果最能体现transform 属性强大实力的是实现元素的3D变换效果。
2D功能函数:
1、2D位移 translate()
说明:translate(tx) 当参数设置一个值的时候,代表水平方向的位移;
translate(tx,ty) 第一个值代表水平方向的距离,第二个值 垂直方向的距离;
translate(tx,ty, tz) 第一个值代表水平方向的距离,第二个值 垂直方向的距离.第三个值 沿Z轴移动(3D)
translateX(tx) 指定方向设置位移 沿X轴移动
translateY(ty) 指定方向设置位移 沿Y轴移动
translateZ(tz) 指定方向设置位移 沿Z轴移动 ( 3D)
当属性值为正值时 代表的是向右或者向下移动,当为负值的时候 代表 向左或向上移动
说明:属性值可以用px 也可以用%(百分比大小的参照物是元素的宽高)
说明:translate()位移的效果和定位里的relative的效果是类似的,都是在当前位置进行位移的,对其元素的布局是没有影响的,原来的位置的保留的。
2、2D缩放scale()
说明: 属性值代表的是倍数,是不用加单位; 0——1 之间是 缩小的效果, 大于1的时候都是放大效果;
默认值 是 1;
scale( 值1 ) 代表水平和垂直都放大或者缩小
scale( 值1,值2 ) 值1: 水平方向的缩放大小 值2 :垂直方向
属性值可以设置为负值,但是很少用;
scaleX(值) 水平方向的缩放比例
scaleY(值) 垂直方向的缩放比例
scaleZ(值) Z轴方向的缩放比例 (3D)
3、2D旋转让rotate()
说明: 属性值的单位是度(deg)
rotate() 沿着中心点旋转; 只能放一个属性值 ,正值:顺时针旋转; 负值: 逆时针旋转;
rotateX() 沿X轴旋转
rotateY() 沿Y轴旋转
rotateZ() 沿Z轴旋转 (3D)
4、2D倾斜 skew()
说明:属性值的单位是度(deg) ;属性值为正值:向左 或向上倾斜 负值:向右或向下倾斜
skew( 值1 ) 一个值的时候 代表 沿X轴倾斜
skew( 值1,值2) 值1: 沿X轴的倾斜 值2 :沿Y轴的倾斜
skewX() 沿X轴的倾斜
skewY() 沿Y轴的倾斜
说明:元素通过 transform进行变形时,都是对其他元素的布局不产生影响的。不脱离文档流。
变形时元素默认情况下都是沿着元素的中心点去变形的
当使用复合式写法的时候,他们顺讯不同,会导致结果不一样,他们执行的顺讯是从后向前解析的。
transform: translate(100px) rotate(60deg);
5、原点设置属性:transform-origin
定义:transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,该属性只有在设置了transform属性的时候起作用;
说明:transform-origin:值1 值2 ; 值1: 水平 值2: 垂直
px % left top right bottom ;
下面是我自己写的一个小案列:
这是代码,万花筒写轮眼大家可能都知道吧,就是火影忍者里面宇智波家族的高级瞳术。首先我们给他一个div作为容器包含里面的元素,然后设置div中心的ul为宽高相同的黑色圆形,再设置里面的三个li为3个黑色椭圆,用定位属性定在ul的中心位置,最后给第三个li里面加一个span宽高相等的圆形,这样我们初始效果就完成了,这时我们设置划过状态,但鼠标划过div时li的背景色改变为红色,第二个顺时针旋转120度,第三个逆时针旋转120度。
这时鼠标划过的显示结果:
大家赶快去试一下吧!