美文网首页收藏
transform实现2D、3D变换

transform实现2D、3D变换

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-04-08 16:10 被阅读0次

前提:二维坐标系如下图所示

image.png

一、2D位移

2D 位移可以改变元素的位置,具体使用方式如下:

    1. 先给元素添加 转换属性transform
    1. 编写 transform 的具体值,相关可选值如下:


      image.png
    1. 注意点:
1. 位移与相对定位很相似,都不脱离文档流,不会影响到其它元素。
2. 与相对定位的区别:相对定位的百分比值,参考的是其父元素;位移的百分比值,参考的是其自身。
3. 浏览器针对位移有优化,与定位相比,浏览器处理位移的效率更高。
4. transform 可以链式编写,例如:transform: translateX(30px) translateY(40px);
5. 位移对行内元素无效。
6. 位移配合定位,可实现元素水平垂直居中
.box {
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%);
}

二、 2D缩放

2D 缩放是指:让元素放大或缩小,具体使用方式如下:

    1. 先给元素添加 转换属性 transform
    1. 编写 transform 的具体值,相关可选值如下:


      image.png
    1. 注意点:
1. scale 的值,是支持写负数的,但几乎不用,因为容易让人产生误解。
2. 借助缩放,可实现小于 12px 的文字。

三、 2D旋转

2D 旋转是指:让元素在二维平面内,顺时针旋转或逆时针旋转,具体使用方式如下:

    1. 先给元素添加 转换属性 transform
    1. 编写 transform 的具体值,相关可选值如下:


      image.png
  • 注意:
    rotateZ(20deg) 相当于 rotate(20deg) ,当然到了 3D 变换的时候,还能写:rotate(x,x,x)

四、2D扭曲(了解)

2D 扭曲是指:让元素在二维平面内被“拉扯”,进而“走形”,实际开发几乎不用,了解即可,具体使用方式如下:

    1. 先给元素添加 转换属性 transform
    1. 编写 transform 的具体值,相关可选值如下:


      image.png

五、多重变换

多个变换,可以同时使用一个 transform 来编写。

transform: translate(-50%, -50%) rotate(45deg);

注意点:多重变换时,建议最后旋转。

六、 变换原点

  • 元素变换时,默认的原点是元素的中心,使用 transform-origin 可以设置变换的原点。
  • 修改变换原点对位移没有影响, 对旋转和缩放会产生影响。
  • 如果提供两个值,第一个用于横坐标,第二个用于纵坐标。
  • 如果只提供一个,若是像素值,表示横坐标,纵坐标取 50% ;若是关键词,则另一个坐标取 50%
1. transform-origin: 50% 50% , 变换原点在元素的中心位置,百分比是相对于自
身。—— 默认值
2. transform-origin: left top ,变换原点在元素的左上角 。
3. transform-origin: 50px 50px , 变换原点距离元素左上角 50px 50px 的位置。
4. transform-origin: 0 ,只写一个值的时候,第二个值默认为 50% 。

七、 3D变换

7.1、 开启3D空间

重要原则:元素进行 3D 变换的首要操作:父元素必须开启 3D 空间!

使用 transform-style 开启 3D 空间,可选值如下:
flat : 让子元素位于此元素的二维平面内( 2D 空间)—— 默认值
preserve-3d : 让子元素位于此元素的三维空间内( 3D 空间)

7.2、设置景深

何为景深?—— 指定观察者与 z=0 平面的距离,能让发生 3D 变换的元素,产生透视效果,看来更加立
体。

使用 perspective 设置景深,可选值如下:
none : 不指定透视 ——(默认值)
长度值 : 指定观察者距离 z=0 平面的距离,不允许负值。
注意: perspective 设置给发生 3D 变换元素的父元素!

7.3、 透视点位置

所谓透视点位置,就是观察者位置;默认的透视点在元素的中心。

使用 perspective-origin 设置观察者位置(透视点的位置),例如:
/* 相对坐标轴往右偏移400px, 往下偏移300px(相当于人蹲下300像素,然后向右移动400像素看元素)
*/
perspective-origin: 400px 300px;
注意:通常情况下,我们不需要调整透视点位置。

八、3D 位移

3D 位移是在 2D 位移的基础上,可以让元素沿 z 轴位移,具体使用方式如下:

    1. 先给元素添加 转换属性 transform
    1. 编写 transform 的具体值, 3D 相关可选值如下:


      image.png

九、3D 旋转

3D 旋转是在 2D 旋转的基础上,可以让元素沿 x 轴和 y 轴旋转,具体使用方式如下:

    1. 先给元素添加 转换属性 transform
    1. 编写 transform 的具体值, 3D 相关可选值如下:


      image.png

十、3D 缩放

3D 缩放是在 2D 缩放的基础上,可以让元素沿 z 轴缩放,具体使用方式如下:

    1. 先给元素添加 转换属性 transform
    1. 编写 transform 的具体值, 3D 相关可选值如下:


      image.png

十一、多重变换

多个变换,可以同时使用一个 transform 来编写。

transform: translateZ(100px) scaleZ(3) rotateY(40deg);

注意点:多重变换时,建议最后旋转。

十二、背部可见性

使用 backface-visibility 指定元素背面,在面向用户时是否可见,常用值如下:
visible : 指定元素背面可见,允许显示正面的镜像。—— 默认值
hidden : 指定元素背面不可见

注意: backface-visibility 需要加在发生 3D 变换元素的自身上。

相关文章

  • transform变换

    transform变换 1. 变换属性 transform 变换分为2D变换和3D变换,描述的是一种变化之后的结果...

  • 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对 2D transfo...

  • css transform matrix使用

    2D变换 1.平移 translate transform:translate(x,y)transform:mat...

  • css3动画

    transform 功能:向元素应用2D或3D转换语法:transform:none|transform-func...

  • 2019-06-11

    CSS3 2d变换 3d变换 css3 2d变换 111111 222222

  • CSS3入门之2D、3D、过度、动画

    2D 3D 过度 动画 2D效果 主要是平面的一些常规操作 transform属性 移动 transform: ...

  • 【知了堂学员笔记】3D动画立方体实现

    对于CSS3新增的属性,我们觉得最炫酷的应该最属于3D变换和2D变换以及动画了吧!下面我将自己对transform...

  • css动画

    css3动画 过渡:transition 2D 转换 transform 3D 转换 transform 动画:a...

  • iOS开发经验(6)-Transform

    目录(transform) 基础及矩阵概念 2D仿射 3D仿射 1. 基础及矩阵概念 在iOS的动画效果中,变换是...

  • CSS3动画

    CSS3之2D/3D动画 2D的变换3D的变换动画 2D动画的变换 基本说明 注意:一般要写不同浏览器的适配 移动...

网友评论

    本文标题:transform实现2D、3D变换

    本文链接:https://www.haomeiwen.com/subject/qghyddtx.html