2D转换和3D转换 transform

本文详细介绍了CSS中的转换技术,包括2D和3D转换的各种方法,如位移、缩放、旋转及如何设置变形原点等内容,并讲解了如何利用3D转换实现景深效果。

目录

一、转换的概念

二、2D转换

2.1 translate

2.2 scale

2.3 rotate

2.4 变形原点

三、3D转换 

3.1 景深

3.2 实现3d效果

3.3 3D位移

3.4 3D旋转


一、转换的概念

转换就是可以让元素进行位移,旋转,缩放等效果

二、2D转换

2.1 translate

2d位移,根据X轴和Y轴位置从当前元素位置移动,例:

transform: translate(-50%,-50%);

会让元素在x轴往左边位移自身宽度的50%,并且让元素在y轴上向上位移自身宽度的50% 

2.2 scale

缩放,默认为1不进行缩放,小于一时缩小,大于一变大,无论变大缩小,元素本身所占位置宽高不发生变化,例

transform: scale(3) 

会使元素放大自身宽高的3倍 

2.3 rotate

旋转,当度数为正数时顺时针旋转,度数为负数时逆时针旋转,例

transform: rotate(90deg);

会使元素顺时针旋转90度

2.4 变形原点

transform-origin 

2d旋转默认是以元素中心,通过这个属性可以设置该元素围绕着那个点变形或旋转,该属性只有在设置了transform属性的时候起作用,值例如“top left”、“right center”等等

例:

transform-origin:left bottom;

可以将变形原点设置到元素自身的左下点

三、3D转换 

3D相对于2D多了一条Z轴,靠近屏幕是正反向,远离屏幕是反方向

3.1 景深

perspective,可以实现近大远小,就像人的眼睛一样看远处小,近处大。

有2种写法:

在父元素使用:perspective: 1200px;

在元素本身使用:transform:perspective(1200px);

3.2 实现3d效果

transform-style:preserve-3d 

让元素的所有3D效果都显示,默认flat,让所有2D效果显示

3.3 3D位移

语法:transform:translate3d(x,y,z) 

也可以使用 【ransform:translateZ(t)】 对Z轴单独设置

像比2D,多了Z轴,当Z轴取值正数了,在正面位移,负数则往后面 

3.4 3D旋转

transform:rotateX()      设置元素围绕X轴旋转 

 transform:rotateY()     设置元素围绕Y轴旋转       

 transform:rotateZ()     设置元素围绕Z轴旋转

 transform:rotate3d(x,y,z,度数)   其中有3个参数4个参数,其中前3个分别代表xyz,当他们的值为1时第四个参数设置的度数生效,为0时不生效,

transform: rotate3d(1,0,1,90deg);

 这会让元素围绕x轴和z轴分别旋转90度,y轴没有任何动作

CSS 中,2D 3D 转换允许开发者以多种方式改变元素的形状、大小、位置角度。这些功能通过 `transform` 属性实现,并且可以结合 `transition` 或 `animation` 创建动画效果。 ### 2D 转换 2D 转换是在二维平面上对元素进行操作,主要包括以下几种方式: - **移动(Translate)** 使用 `translate(x, y)` 可以将元素从当前位置在 X Y 轴上移动指定的距离。例如: ```css transform: translate(50px, 100px); ``` 该代码将元素向右移动 50px,向下移动 100px [^5]。 - **旋(Rotate)** 使用 `rotate(angle)` 可以让元素围绕其原点旋指定的角度。例如: ```css transform: rotate(45deg); ``` 这将使元素顺时针旋 45 度。 - **缩放(Scale)** 使用 `scale(sx, sy)` 可以按比例缩放元素的大小。其中 `sx` 是 X 轴的缩放比例,`sy` 是 Y 轴的缩放比例。例如: ```css transform: scale(1.5, 2); ``` 该代码将元素的宽度放大 1.5 倍,高度放大 2 倍。 - **倾斜(Skew)** 使用 `skew(ax, ay)` 可以让元素在 X Y 轴上发生倾斜。例如: ```css transform: skew(30deg, 20deg); ``` 这将使元素在 X 轴上倾斜 30 度,在 Y 轴上倾斜 20 度。 - **变换原点(Transform Origin)** 使用 `transform-origin` 可以指定元素变换的原点。例如: ```css transform-origin: 10% 10%; ``` 这将使元素的变换原点设置为左上角的 10% 位置。 ### 3D 转换 3D 转换是在三维空间中对元素进行操作,比 2D 转换更加复杂生动,包括以下主要功能: - **3D 移动(Translate3D)** 使用 `translate3d(x, y, z)` 可以在 X、Y Z 轴方向上移动元素。例如: ```css transform: translate3d(100px, 100px, 50px); ``` 该代码将元素在 X 轴移动 100px,Y 轴移动 100px,Z 轴移动 50px [^2]。 - **透视(Perspective)** 使用 `perspective(n)` 可以定义 3D 转换元素的透视视图,数值越小,透视效果越明显。例如: ```css perspective: 600px; ``` 这会为元素创建一个 600px 的透视效果 [^2]。 - **3D(Rotate3D)** 使用 `rotate3d(x, y, z, angle)` 可以围绕指定的轴进行旋。例如: ```css transform: rotate3d(1, 0, 0, 45deg); ``` 这将使元素围绕 X 轴旋 45 度 [^4]。 - **3D 缩放(Scale3D)** 使用 `scale3d(sx, sy, sz)` 可以在 X、Y Z 轴方向上进行缩放。例如: ```css transform: scale3d(2, 1.5, 1); ``` 该代码将元素的宽度放大 2 倍,高度放大 1.5 倍,Z 轴方向保持不变 [^4]。 ### 案例代码 以下是一个使用 `translate3d` `perspective` 的简单示例: ```html <!DOCTYPE html> <html> <head> <style> .container { perspective: 600px; /* 设置透视距离 */ } .box { width: 100px; height: 100px; background-color: red; transform: translate3d(50px, 50px, 100px); /* 在三维空间中移动 */ } </style> </head> <body> <div class="container"> <div class="box"></div> </div> </body> </html> ``` ### 动画与转换结合 可以通过 `@keyframes` 定义动画,并将其应用到元素上。以下是一个简单的动画示例: ```css @keyframes example { from { transform: translate(0, 0); } to { transform: translate(100px, 200px); } } .animate { animation: example 2s infinite; } ``` 这个动画会不断将元素从原点移动到指定的位置。 ### 总结 通过 CSS 的 `transform` 属性,可以轻松实现 2D 3D 转换,从而创建丰富的视觉效果。这些转换可以与动画结合使用,以实现更复杂的交互效果。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对卦卦上心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值