美文网首页
2D和3D的转换

2D和3D的转换

作者: 過尽千帆_YL | 来源:发表于2021-05-01 21:56 被阅读0次

一,2D转换(变换)transfrom

1. 2D移动 translate

属性值 translate(x,y) x正值向右移动 y正值向下移动

div{
    transfrom:translate(50px,50px);
}

小结:

  1. translate 中的百分比单位是相对于自身元素的 translate:(50%,50%);
  2. translate 类似定位,不会影响到其他元素的位置
  3. 对行内标签没有效果

2. 2D旋转 rotate

属性值为 rotate(角度) 如 transform :rotate(30 deg) 顺时针方向旋转30

div{
    transfrom:rotate(0deg);
}

3. 转换中心 transfrom-origin 了解

  1. transform-origin :50% 50%; 默认值 元素的中心位置 百分比是相对于自身的宽度和高度
  2. transform-origin :top left; 左上角 和 transform-origin:0 0;相同
  3. transform-origin :50px 50px; 距离左上角 50px 50px 的位置
  4. transform-origin :0; 只写一个值的时候 第二个值默认为 50%;

总结:设置旋转的中心,可以跟方位名词,也可以写具体的像素值。

4. 2D 缩放 scale

属性值为 scale(宽的倍数,高的倍数) 如 宽变为两倍,高变为3倍 transform :scale(2,3)

div{
    transfrom:scale(2,3);
}

小结:

  1. transform :scale (1,1) 放大一倍 相对于没有放大

  2. transform :scale (2,2) 宽和高都放大了2倍

  3. transform :scale (2) 只写一个参数 第二个参数则和第一个参数一样 相当于 scale(2,2)

  4. transform :scale(0.5,0.5) 缩小

  5. transform :scale(-2,-2) 反向放大2倍 很少用负数 容易让人产生误解

当我们同时有位移和其他属性时,我们需要把位移放到最前面。

二, 动画 animation

注意:动画和过渡的区别

    过渡 只能看到一次变化过程     动画  可以设置变化次数   甚至是无数次

2.1 步骤

/* 1 声明动画函数 */
@keyframes move{
    0%{
        width:100px;
        background-color:skyblue;
    }
    50%{
        width:100px;
        background-color:skyblue;
    }  
    100%{
        width:100px;
        background-color:skyblue;
    }  
}

div{
    width:200px;
    height:200px;
    background-color:green;
    margin:100px auto;
    /* 设置动画名*/
    animation-name:move;
    /* 设置动画播放的持续时间*/
    animation-duration:2s;
}

@keyframes 里面可以放任何css样式

2.2 语法

2.2.1 动画名字

设置要使用的动画名 animation-name: xxx;

2.2.2 持续时间

设置动画播放的持续时间 animation-duration: 3s ;

2.2.3 速度曲线

和设置过渡的曲线一样 animation-timiing-function:linear;

  • linear: 匀速
  • steps() :指定了时间函数中的间隔数量(步数)
  • ease: 慢-快-慢 默认值
  • ease-in: 慢-快。
  • ease-out: 快-慢。
  • ease-in-out: 慢-快-慢。

2.2.4 延迟时间

animation-delay :0s ;(鼠标放上去何时开始)

2.2.5 循环次数

设置动画播放的循环次数 animation-iteration-count: infinite;

infinite 为无限循环

2.2.6 循环方向

animation-direction (默认是normal)

在动画中定义循环方向的属性值为 :

  1. normal 默认值
  2. reverse 反向运行
  3. alternate 正-反-正 (让动画走出去,然后再走回来,逆播放)
  4. alternate-reverse
  5. 以上与循环次数有关

2.2.7 动画等待或者结束的状态

animation-fifill-mode 设置动画在等待或者结束的时候的状态

forwards:动画结束后,元素样式停留在 100% 的样式

backwards: 在延迟等待的时间内,元素样式停留在 0% 的样式

both: 同时设置了 forwards和backwards两个属性值

2.2.8 暂停和播放

animation-play-state 控制 (鼠标放上去)播放 还是 暂停

running 播放 paused 暂停

2.3 animation 的复合写法

animation: name duration timing-function delay iteration-count direction fill-mode;

/*animation: 动画名字 持续时间 规定动画的运动状态 规定动画何时开始    */

简写属性里面不包含 animation-play-state

想要动画走回来,而不是直接跳回来:animation-derection:alternate

三,3D 转换

3.1 三维坐标系

  • x轴 水平向右
  • y轴 垂直向下
  • z轴 垂直屏幕 由屏幕里面指向屏幕的外面

3.2 3d移动 translate3d

语法:

  1. transform:translate3d(x,y,z) 其中 x y z 分别指要移动的轴的方向的距离
  2. translform:translateX(100px) 仅仅是移动在x轴上移动
  3. translform:translateY(100px) 仅仅是移动在Y轴上移动
  4. translform:translateZ(100px) 仅仅是移动在Z轴上移动
    注意:Z轴是垂直屏幕,由里指向外面 ,默认看不到元素在z轴的方向上移动,需要加上视距

3.3 视距 perspertive

  • 设置人和物体的距离—视距 这个值是给物体的父元素
  • 动态改变物体的 translateZ 即可观察效果
 /* 父元素 */
    body {
      /* 视距 */
      perspective: 1000px;
    }

    /* 目标 */
    div {
      width: 200px;
      height: 200px;
      background-color: aqua;
      margin: 100px auto;
      /* z轴的移动 */
      transform: translateZ(0px);
    }

四,3D的旋转 rotate3d

4.1 左手准则

比如要判断某元素沿着x轴是怎么旋转的

  1. 左手的手拇指指向 x轴的正方向
  2. 其余手指的弯曲方向就是该元素沿着x轴旋转的方向了

4.2 语法

  1. transform:rotateX(45deg); 沿着x轴正方向旋转 45度
  2. transform:rotateY(45deg) 沿着y轴正方向旋转 45deg
  3. transform:rotateZ(45deg) 沿着Z轴正方向旋转 45deg
  4. transform:rotate3d(x,y,z,deg) 沿着自定义轴旋转 deg为角度

五,3D的缩放 scale3d

3d缩放 可以控制元素 在 x轴,y轴,z轴上的缩放,也可以理解为 宽,高,厚度的缩放

5.1 语法

  1. transform: scale3d(1 ,1,2); 宽,高 缩放一倍,厚度放大两倍
  2. transform: scaleX(1) 只缩放宽
  3. transform: scaleY(1) 只缩放高
  4. transform: scaleZ(1) 只缩放厚

六,视距原点 perspective-origin

  1. 视距原点和视距一样,也是设置给要观察元素的父元素上
  2. perspective-origin:center center; 默认值是元素的中心点
  3. perspective-origin:10px; 指定了一个参数的时候,第二个参数默认为center 也就是50%;
  4. perspective-origin:10% %; 百分比都是相对于自身的宽度和高度

七,转换样式 transform-style

/* 开启3维立体环境 */
transform-style: preserve-3d;

相关文章

  • 3DMax操作笔记

    3d 2d 2d转换3d 互相转换 2d线的 断开和连接 如果 连的线最后闭合会提示是否闭合,闭合方可转换为可编辑...

  • Css3 - transform(变形)

    一.2D转换 二.3D转换

  • 2D与3D

    前言 说到2d与3d的转换,到底什么是2d,什么又是3d,看下图: 所谓的2d和3d就是我们理解的二维空间和三维空...

  • 2D和3D转换心得

    转换 定义:改变位置、形状、尺寸{2D(XY轴)和3D(XYZ轴)} 2D:平面转换:平移(move)、倾斜(sk...

  • 3D

    照相机将三维空间的物体转换为2D的相片。在3D开发中,利用照相机原理来进行2D和3D的相互转换。在3D开发中,相机...

  • day22-CSS-3D转换模块

    3D转换模块 2D和3D的区别 坐标系:2D:xy轴--平面 3D:xyz轴--立体 默认情况下所有的元素都是2D...

  • css 动画总结

    一、2D、3D 转换 (transform) 让元素在一个坐标系统中变形 2D转换 translate(x,y) ...

  • 探究CSS3动画:transform/transition/an

    转换(transform) 如大家了解的一样,转换分为2D转换和3D转换。利用CSS3的转换功我们能够对元素进行移...

  • css动画

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

  • transform

    属性transform 向元素应用 2D 或 3D 转换。transfo...

网友评论

      本文标题:2D和3D的转换

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