前端学习_CSS3_3d效果

前端学习——CSS3_3D转换效果

  1. 三维坐标系

    • x 轴:水平向右 – 注意:x 轴右边是正值,左边是负值
    • y 轴:垂直向下 – 注意:y 轴下面是正值,上面是负值
    • z 轴:垂直屏幕 – 注意:往外边的是正值,往里面的是负值
  2. 3D转换知识要点

    • 3D位移:translate3d(x, y, z)
    • 3D 旋转:rotate3d(x, y, z)
    • 透视:perspctive
    • 3D呈现 transfrom-style
  3. 3D移动 translate3d

    • 3D移动就是在2D移动的基础上多加了一个可以移动的方向,就是 z 轴方向
    • transform: translateX(100px):仅仅是在 x 轴上移动
    • transform: translateY(100px):仅仅是在 y 轴上移动
    • transform: translateZ(100px):仅仅是在 z 轴上移动
    • transform: translate3d(x, y, z):其中x、y、z 分别指要移动的轴的方向的距离
    • 注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充
  4. 语法

     transform: translate3d(x, y, z)
    
  5. 代码演示

    transform: translate3d(100px, 100px, 100px)
    /* 注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充 */
    transform: translate3d(100px, 100px, 0)
    
一、视距(透视) perspective
  1. 知识点讲解

    • 如果想要网页产生 3D 效果需要透视(3d眼镜)
    • 透视也称为视距,所谓的视距就是人的眼睛到屏幕的距离
    • 透视的单位是像素
  2. 知识要点

    • 透视需要写在被视察元素的父盒子上面
  3. 代码演示(值越小及视距越近 物体越大)

    body {
      perspective: 1000px;
    }
    
二、 translateZ
  1. translateZ与perspecitve的区别
    • perspecitve给父级进行设置,translateZ给 子元素进行设置不同的大小
三、3D旋转rotate

3D 旋转指可以让元素在三维平面内沿着 x 轴、y 轴、z 轴 或者自定义轴进行旋转

  1. 语法
    • transform: rotateX(45deg) – 沿着 x 轴正方向旋转 45 度
    • transform: rotateY(45deg) – 沿着 y 轴正方向旋转 45 度
    • transform: rotateZ(45deg) – 沿着 z 轴正方向旋转 45 度
    • transform: rotate3d(x, y, z, 45deg) – 沿着自定义轴旋转 45 deg 为角度

代码案例

div {
  perspective: 300px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateX(-45deg)
}
四、3D呈现transform-style
  1. transform-style
    • 控制子元素是否开启三维立体环境
    • transform-style: flat 代表子元素不开启3D 立体空间,默认的
    • transform-style: preserve-3d 子元素开启立体空间
    • 代码写给父级,但是影响的是子盒子

代码实例实现双面盒子鼠标经过 翻转效果(实用)

 .box{
            position: relative;
            width: 300px;
            height: 300px;
            margin: 100px auto;
            /* 设置过渡  */
            transition: all 1s;
            /* 让背面盒子保持立体空间 在背面盒子的父系盒子做设置 */
            transform-style: preserve-3d;
        }
        .front,
        .back{
            /* 绝对定位使得两个盒子可叠在一起 */
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            /* 设置中心以及行高使得文字居中显示 */
            text-align: center;
            line-height: 300px;
            color: white;
        }
        .front{
            /* 设置z-index使得在最顶端 */
            background-color: pink;
            z-index: 1;

        }
        .back{
            background-color: black;
            /* 对背面盒子沿着y轴旋转180度变成背面 */
            /* 且在盒子的父系box上设置保留3d效果 */
            transform: rotateY(180deg);
        }
        .box:hover{
            /* 鼠标经过时沿着y轴翻面 */
            transform: rotateY(180deg);
        }
 <div class="box">
        <div class="front">
            牛的牛的
        </div>
        <div class="back">
            真有你的
        </div>
    </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值