2D变换
位移:translate
translateX
translateY
- 一个参数:
translate(x)
,代表沿x
轴位移x
像素,y
轴默认为0
- 两个参数:
translate(x, y)
,代表沿x
轴和y
轴位移的距离 x
、y
单位为px
x
值:为正
则沿着x轴
向右
位移,为负
则沿着x轴
向左
位移y
值:为正
则沿着y轴
向下
位移,为负
则沿着y轴
向上
位移- 如果是通过
active
进行位移,执行完毕后会还原
- 单独写法:
translateX(x)
translateY(y)
- 位移的参考原点为元素
左上角
旋转:rotate
rotate(angle)
:参数只有一个- 参数为旋转的角度,单位为
deg
2d
空间只能围绕元素中心的z
轴旋转- 参数为
正
值则顺
时针旋转,为负
值则逆
时针旋转 - 默认为围绕元素
中心
为原点进行旋转
缩放:scale
- 一个参数:
scale(num)
,代表同时在x
轴和y
轴两个方向缩放相同的倍数 - 两个参数:
scale(x, y)
,分别代表x
和y
轴方向缩放相应的倍数 - 参数为数字,无单位
- 默认值为1倍,就是不缩放
- 默认为围绕元素
中心
为原点进行缩放
变形:skew
skewX
skewY
- 一个参数:
skew(x)
,代表沿x
轴变形x
角度,y
轴默认为0
- 两个参数:
skew(x, y)
,代表沿x
轴变形x
的角度,沿y
轴变形y
的角度 - 参数为变形的角度,单位为
deg
x
值:为正
则向左
变形,为负
则向右
变形y
值:为正
则向上
变形,为负
则向下
变形- 单独写法:
skewX(x)
skewY(y)
- 默认为围绕元素
中心
为原点进行变形
变换的原点
- 原点就是元素的中心,可以通过
transform-origin
属性改变原点位置 - 默认值为
transform-origin
:center
center
; - 除了
位移
(因为位移元素直接移跑了),别的变换(旋转
、缩放
、变形
)都是围绕原点变换的 - 原点关键字:
top
bottom
center
left
right
- 只设置一个的话,另一个为默认值
center
- 也可以使用
px
、em
、百分比值
(一般用不到) - 设置的偏移值都是从元素
左上角
开始的
变换的特点
- 变换之后的元素不会脱离
文档流
- 可以移出屏幕边缘或遮挡住旁边其他元素
- 行内元素需要改变元素的
display
为block
或inline-block
,或者改变其父元素的display
为flex
或grid
后,才能使用变换 - 可以使用
多重变换
,用空格
隔开,变换的每个值从右向左
依次执行,通常将平移放到首位,最后执行
3D变换
父元素样式
- 3D变换需要父元素设置样式才能保留3d的变化效果
- 保留3D变换:
transform-style: preserve-3d
,默认值为flat
表示不保留3D变换 - 设置视角深度:
perspective: 1000px
- 观察点位置:
perspective-origin
- 默认值为:
perspective-origin
:center
center
; - 第一个代表
x
轴上的位置,第二个值代表y
轴上的位置 - 取值可以为:关键字、长度值,百分比值(相对于当前元素的宽或高),可以为负值
- 可以设置的关键字:
top
bottom
center
left
right
- 上面关键字的顺序无关,浏览器会自动调整
top
==0%
bottom
==100%
center
==50%
left
==0%
right
==100%
- 设置的偏移值都是从元素
左上角
开始的
- 默认值为:
- 观察点位置:
位移:translate3d
translateX
translateY
translateZ
translate3d(x, y, z)
:必须传递三个参数translateX(x)
translateY(y)
translateZ(z)
- 参数单位为
px
x
值:为正
则沿着x轴
向右位移,为负
则沿着x轴
向右位移y
值:为正
则沿着y轴
向下位移,为负
则沿着y轴
向上位移z
值:为正
则沿着z轴
向屏幕外位移,为负
则沿着z轴
向屏幕内位移
旋转:rotate3d
rotateX
rotateY
rotateZ
rotate3d(x, y, z, angle)
:沿着x
,y
,z
三个方向矢量值确定的坐标点旋转angle
角度(比较少用)x
,y
,z
为三个方向的矢量值,无单位rotateX(angle)
rotateY(angle)
rotateZ(angle)
沿着元素中心点穿过的(X/Y/Z)轴旋angle
角度- 参数
angle
单位为deg
angle
值:为正
则为顺
时针旋转,为负
则为逆
时针旋转- 可以通过
transform-origin: left
来设置比如绕着元素的左边框旋转 backface-visibility
属性定义当元素旋转到背面向屏幕时是否可见visible
背面可见hidden
背面不可见