2D 变形

    transform

    中可以写一个或多个方法。

    rotate()
    1. rotate(<angle>)
    2. rotate(45deg);
    3. <!-- 右边旋转,顺时针 -->
    4. rotate(-60deg);
    5. <!-- 左边旋转,逆时针 -->

    变形 - 图2

    transform-origin

    其用于设置原点的位置(默认位置为元素中心)第一值为 X 方向,第二值为 Y 方向, 第三值为 Z 方向。(当值空出未写的情况下默认为 50%)

    1. transform-origin: [ <percentage> | <length> | left | center | right | top | bottom] | [ [ <percentage> | <length> | left | center | right ] && [ <percentage> | <length> | top | center | bottom ] ] <length>?
    2. <!-- 默认值为 50% 50% -->
    3. transform-origin: 50% 50%;
    4. transform-origin: 0 0;
    5. transform-origin: right 50px 20px;
    6. transform-origin: top right 20px;

    translate()

    移动方法,参数分别代表 X 与 Y 轴的移动(偏移值均可为负值)。

    1. translate(<translation-value>[, <translation-value>]?)
    2. <!-- 也可单独设置 X Y 轴的偏移 -->
    3. translationX(<translation-value>)
    4. translationY(<translation-value>)
    5. transform: translate(50px);
    6. transform: translate(50px, 20%);
    7. <!-- Y 轴偏移为偏移对象的高度,X 轴为宽度 -->
    8. transform: translate(-50px);
    9. transform: translate(20%);

    变形 - 图4

    scale()

    缩放方法,参数分别代表 X 与 Y 轴的缩放(缩放值均可为小数)。当第二值忽略时,默认设置为等同第一值。

    skew()

    其为倾斜的方法。第一值为 Y 轴往 X 方向倾斜(逆时针),第二值为 X 轴往 Y 方向倾斜(顺时针)。(倾斜值可为负值)

    1. skew(<angle>[, <angle>]?)
    2. skewX(<angle>)
    3. skewY(<angle>)
    4. transform: skew(30deg);
    5. transform: skew(30deg, 30deg);
    6. transform: skewX(30deg);
    7. transform: skewY(30deg);

    3D 变形

    rotateY()

    3D 空间旋转。

    1. transform: rotateY(<angle>)
    perspective

    变形 - 图7

    其用于设置图片 Y 轴旋转后的透视效果。<length> 可以理解为人眼与元素之间的距离,越紧则效果越明显。

    1. perspective: none | <length>
    2. perspective: none;
    3. perspective: 2000px;
    4. perspective: 500px;

    perspective-origin

    其为设定透视的角度(透视位置均可设定为负值)。

    translate3d()
    1. translate3d(<translate-value>, <translate-value>, <length>)
    2. translateX(<translate-value>)
    3. translateY(<translate-value>)
    4. translateZ(<length>)
    5. transform: translate3d(10px, 20%, 50px);
    6. transform: translateX(10px);
    7. transform: translateY(20%);
    8. transform: translateZ(-100px);

    变形 - 图10

    scale3d()
    1. scale3d(<number>, <number>, <number>)
    2. scaleX(<number>)
    3. scaleY(<number>)
    4. scaleZ(<number>)
    5. transform: scale3d(1.2, 1.2, 1);
    6. transform: scale3d(1, 1.2, 1);
    7. transform: scale3d(1.2, 1, 1);
    8. transform: scaleZ(5);
    9. <!-- Z 轴的缩放扩大并不影响盒子大小 -->

    rotate3d()

    取 X Y Z 三轴上的一点并于坐标原点连线,以连线为轴进行旋转(逆时针)。

    1. rotate3d(<number>, <number>, <number>, <angle>)
    2. rotateX(<angle>)
    3. rotateY(<angle>)
    4. rotateZ(<angle>)
    5. transform: rotate3d(1, 0, 0, 45deg);
    6. <!-- 上面等同于 X 轴旋转 -->
    7. transform: rotate3d(0, 1, 0, 45deg);
    8. <!-- 上面等同于 Y 轴旋转 -->
    9. transform: rotate3d(0, 0, 1, 45deg);
    10. <!-- 上面等同于 2D 旋转 -->
    11. transform: rotate3d(1, 1, 1, 45deg);

    变形 - 图12

    transform-style

    其用于设置保留内部的 3D 空间,原因是一个元素进行transform之后内部默认为flat

    backface-visibility

    其用于设置背面不可见。

    1. backface-visibility: visible | hidden
    2. backface-visibility: hidden;

    变形 - 图14