变形

2D 变形

2D 变形示例代码

transform

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

  1. transform: none | <transform-function>+
  2. transform: none
  3. <!-- 默认值为 none -->
  4. transform: <transform-function>+
  5. transform: translate(50%) rotate(45deg);
  6. transform: rotate(45deg) transform(50%)
  7. <!-- 变形函数顺序普通结果不同,原因是坐标位置发生了改变 -->

变形 - 图1

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;

变形 - 图3

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 轴的缩放(缩放值均可为小数)。当第二值忽略时,默认设置为等同第一值。

  1. scale(<number> [, <number>]?)
  2. scaleX(<number>)
  3. scaleY(<number>)
  4. <!-- 整体放大 1.2 -->
  5. transform: scale(1.2);
  6. <!-- 高度拉伸 -->
  7. transform: scale(1, 1.2);
  8. <!-- 宽度拉伸 -->
  9. transform: scaleX(1.2);
  10. <!-- 高度拉伸 -->
  11. transform: scaleY(1.2);

变形 - 图5

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);

变形 - 图6

3D 变形

3D 变形示例代码

rotateY()

3D 空间旋转。

  1. transform: rotateY(<angle>)
perspective

变形 - 图7

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

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

变形 - 图8

perspective-origin

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

  1. perspective-origin: [ <percentage> | <length> | left | center | right | top | bottom] | [ [ <percentage> | <length> | left | center | right ] && [ <percentage> | <length> | top | center | bottom ] ]
  2. perspective-origin: 50% 50%
  3. <!-- 默认值为 50% 50% 正中间的位置进行透视-->
  4. perspective-origin: left bottom;
  5. perspective-origin: 50% -800px;
  6. perspective-origin: right;

变形 - 图9

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. <!-- %的参照物为自身元素 -->
  7. transform: translateX(10px);
  8. transform: translateY(20%);
  9. 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 轴的缩放扩大并不影响盒子大小 -->

变形 - 图11

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

  1. transform-style: flat | perserve-3d
  2. <!-- 默认为 flat -->
  3. transform-style: flat;
  4. transform-style: preserve-3d;

变形 - 图13

backface-visibility

其用于设置背面不可见。

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

变形 - 图14