css3 transform理解

190 阅读2分钟

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战

transform 使css能够对元素进行2d、3d的转换,比如:旋转、倾斜、位移、缩放。这是通过修改CSS视觉格式化模型的坐标空间来实现的

transform MDN

偏移、缩放、旋转、缩放

偏移(translate(x, y)translate3d(x, y, z)

注意点:

  • 3d比2d多了一个z轴方向的偏移量,2d不能写三个参数,同样3d不能写两个参数,既不能多写,也不能写;
  • 设置百分比时是以自身宽度作为参考的,与元素本身的margin、padding值无关,可以理解为参考标准盒模型;
  • 当然这个属性可以拆分:translateX(x)translateY(y)translateZ(z)

实例:

transform: translate(10%, 10px);    |    transform: translate3d(10px, 10%, 10px);

缩放(scale(x, y)scale(x, y, z)

注意点:

  • 只写一个参数的话,其实是多个相同参数的简写;

  • 3d比2d多了一个z轴方向的偏移量,2d不能写三个参数,同样3d不能写两个参数,既不能多写,也不能少写;

  • 缩放时,padding、border都会被计算进来,可以理解为参考IE盒模型

  • 当然这个属性可以拆分:scaleX(x)scaleY(y)scaleZ(z)

    实例:

    transform: scale(1.1, 1.2);     |    transform: scale3d(1.1, 1.2, 2);
    

旋转(rotate(angle)rotate3d(x,y,z,angle)

rorate轴线.jpg

旋转时需要依据一个轴线来确定如何旋转,如图所示

x轴旋转以绿色轴为旋转中心,以此类推,红色对应y轴,蓝色对应z轴

注意点:

  • rorate(20deg)绕z轴旋转的简写,一般平面情况下咱们也主要用这个旋转;
  • 当然这个属性可以拆分:rorateX(deg)rorateY(deg)rorateZ(deg)

实例:

transform: rorate(20deg);   

缩放(scale(x, y)scale(x, y, z)

注意点:

  • 只写一个参数的话,其实是多个相同参数的简写;
  • 3d比2d多了一个z轴方向的偏移量,2d不能写三个参数,同样3d不能写两个参数,既不能多写,也不能写;
  • 缩放时,padding、border都会被计算进来,可以理解为参考IE盒模型
  • 当然这个属性可以拆分:scaleX(x)scaleY(y)scaleZ(z)

实例:

transform: scale(1.1, 1.2);     |    transform: scale3d(1.1, 1.2, 2);