2D属性-transform
1、translate()
将元素向指定的方向移动,类似于position中的relative。
水平移动:向右移动translate(tx,0)和向左移动translate(-t,x0);
垂直移动:向上移动translate(0,-ty)和向下移动translate(0,ty);
对角移动:右下角移动translate(tx,ty)、右上角移动translate(tx,-ty)、左上角移动translate(-t>,ty)和左下角移动translate(-tx,ty)。
translateX():水平方向移动一个对象。对像只向X轴进行移动,如果值为正值,对像向右移动 如果值为负值,对像向左移动。translateY(:纵轴方向移动一个对象。对象只向Y
轴进行移动,如果值为正值,对象向下移动;如果值为负值,对像向上移动。
这两个函数和前面介绍的translate()函数不同的是每个方法只接受一个值。
所以
transform:translate(-100px,0)实际上等于transform:translateX(-100px);
transform:translate(0-100,px)实际上等于transform:translateY(-100px)。
设置left 属性会频繁的造成浏览器回流重排,而transform和opacity 属性不会,因为它是是作为合成图层发送到GPU上,由显卡执行的渲染,这样做的优化如下
• 可以通过亚像素精度得到一个运行在特殊优化过的单位图形任务上的平滑动画,并且运行非常快。
• 动画不再绑定到CPU重排,而是通过GPU合成图像。即使运行一个非常复杂的Ja vaScript任务,动画仍然会很快运行。
设置left-合成图层
设置translate-独立图层
2、scale()
让元素根据中心原点对对象进行缩放。默认的值1。因此0.01到0.99之间的任何值,使一个元素缩 ;而任何大于或等于1.01的值,让元素显得更大。
缩放scale()函数和translate()函数的语法非常相似,他可以接受一个值,也可以同时接受两个值, 如果只有一个值时,其第二个值默认与第一个值相等。
例如,
scale(1,1)元素不会有任何变化,而scale(2,2)让元素沿X轴和Y轴放大两倍。
scaleX():相当于scale(sx1)。表示元素只在X轴(水平方向)缩放元素,其默认值是1。
scaleY():相当于scale(1sy)。表示元素只在Y轴(纵横方向)缩放元素,其默认值是1。
3、rotate()
旋转rotate()函数通过指定的角度参数对元素根据对象原点指定一个2D旋转。它主要在二维空间内这生行操作,接受一个角度值,用来指定旋转的幅度。如果这个值为正值,元素相对原点中心顺时针旋转;如果这个值为负值,元素相对原点中心逆时针旋转。
rotateX()方法,元素围绕其X轴以给定的度数进行旋转
rotateY()方法,元素围绕其Y轴以给定的度数进行旋转
4、 skew()
倾斜skew()函数能够让元素倾斜显示。它可以将一个对象以其中心位置围绕着X轴和Y轴按照一定的角度倾斜。
一个参数时:表示水平方向的倾斜角度;
两个参数时:第一个参数表示水平方向的倾斜角度,第二个参数表示垂直方向的倾斜角度
5、transform-origin
transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,该属性只有在设置了trans form属性的时候起作用;
因为我们元素默认基点就是其中心位置,换句话说我们没有使用transform-origin改变元素基点位置的情况下,transform进行的rotatetranslate.scaleskew等操作都是以元素自己中心位置进行变化的。
2D 转换元素能够改变元素x和y轴