十、 3D
2d是平面
1 | 2d的坐标系: x + y |
3d是立体
1 | 3d的坐标系: x + y + z |
10.1 translateZ
该属性是transform
的一个子属性,表示元素沿着自身坐标系z
轴移动多少像素
1 | <div id="box"> |
1 | img { |
但是只有该条语句的时候, 将没有任何效果
要给父元素添加perspective: xxpx
表示,此时元素距离屏幕的距离
举例:
1 | /* 父元素 */ |
所以,当只有一个translateZ
属性的时候, 浏览器不知道该以什么样的形式变化
所以,必须给父元素添加perspective
属性,使父元素和子元素之间有一个相对距离的比值
10.2 perspective
景深:
决定元素到屏幕的距离
举例:
1 | /* 父元素 */ |
10.3 transform-style: perserve-3d
作用:
让子元素保留3d效果
1 | <div id="div1"> |
1 | #div1 { |
给div2
添加 transform: rotateY(60deg);
给div3
添加 transform: rotateX(-60deg);
1 | #div2 { |
给div2
添加transform-style: preserve-3d;
1 | #div2 { |
10.4 scaleZ
scale
是缩放的意思,一个元素只有高度和宽度没有厚度的概念,所以给一个元素添加scaleZ
是没有意义的
给一个具备立体样式容器元素添加scaleZ
,将体现在该元素的子元素身上
举例:
接下来, 我们把该元素变为具备立体样式的容器元素:
1 | <div> |
综合结论:
当给一个元素添加
scaleZ
是没有意义的, 只有当一个元素成为有立体样式的容器元素的时候,此时添加scaleZ
,将体现在子元素身上
10.5 backface-visibility
默认情况下图片背面是可见状态
backface-visibility:visible;
(默认值)
加上backface-visibility: hidden
图片的背面被隐藏
10.6 改变旋转轴中心
transform-origin
: 接受两个参数可以是单词法
可以是像素法
可以百分比
默认是
50% 50%
改变旋转轴中心为左上角
:
1 | img { |
改变旋转轴中心到 50px 50px
的位置:
1 | img { |
改变旋转轴中心到右侧中间部分:
1 | img { |