带你领略3D转换的魅力~


一、什么是3D?

与平面坐标系的2D相比,3D是三维坐标系,除了有X轴和Y轴,还多了垂直屏幕的Z轴,它的特点就是近大远小、物体后面遮挡不可见。所以有了3D就能使图片动画变得立体生动,下面就让我们来看看它的几个常用属性吧~

二、3D转换的常用属性

1.3D位移:translate3d(x,y,z)

用法:

  • translform:translateX(100px):仅仅是在x轴上移动;

  • translform:translateY(100px):仅仅是在y轴上移动;

  • translform:translateZ(100px):仅仅是在z轴上移动;
    (注意:translateZ一般用px单位)

  • translform:translate3d(x,y,z):其中x、y、z分别指要移动的轴的方向的距离

    注意:
    xyz是不能省略的,如果没有就写0

在这里插入图片描述
上图就是三维坐标系,其中x轴:水平向右(为正值);y轴:垂直向下(为正值);z轴:垂直屏幕(往外面为正值,即越往外看到的图片就越大)。

2.3D旋转:rotate3d(x,y,z)

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

语法:

transform:rotateX(45deg) :沿着x轴正方向旋转45度;

transform:rotateY(45deg) :沿着y轴正方向旋转45deg;

transform:rotateZ(45deg) : 沿着Z轴正方向旋转45deg;

transform:rotate3d(x,y,z,deg) :沿着自定义轴旋转deg为角度(了解即可);

transform:rotate3d(1,1,0,45deg) 就是沿着对角线旋转 45deg;

下面我们来看一个由旋转实现的效果图:
在这里插入图片描述
图中的粉色盒子就是以x轴为中心,正方向旋转了120度。为了我们方便观看前后效果,我又将整体沿着y轴往左旋转了30度,具体代码如下:

<style>
        body {
            perspective: 500px;
            /*它是透视的意思,这里没看懂没关系,下面会讲这个属性*/
        }

        .box {
            position: relative;
            /*子盒子用了绝对定位,父盒子就要用相对定位*/
            width: 200px;
            height: 300px;
            margin: 100px auto;
            transform: rotateY(-30deg);
            /*整体盒子沿y轴向左转30度,为负方向所以为负值*/
            transform-style: preserve-3d;
            /*为了使3D呈现的属性,下面也会讲*/
        }

        .up1,
        .up2 {
            position: absolute;
            /*因为两个盒子要重叠放在一起所以要用定位*/
            width: 100%;
            height: 100%;
        }

        .up1 {
            background-color: skyblue;
            z-index: 1;
            /*为了让它在上面,提高它的优先级*/
        }

        .up2 {
            background-color: pink;
            transition: all 5s;
            /*过渡一下,使他变化的没那么生硬*/
        }

        .box:hover .up2 {
            transform: rotateX(120deg);
            /*当鼠标放上去的时候,粉色盒子开始转动角度*/
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="up1"></div>
        <div class="up2"></div>
    </div>
</body>

上面的图片其实是一个动态的效果,当鼠标放上去,粉色盒子就会转动,离开就归位,让人的视觉有一个3D变化的效果。

3.透视:perspective

透视也称为视距:视距就是人的眼睛到屏幕的距离

透视越大,物体越小
(这里不要和上面z轴的距离搞混了,因为z轴越大是离我们眼睛越近,所以物体越大,而透视代表的是人的眼睛到屏幕的距离,越大代表越远,所以看到的物体就小了)

透视的单位是像素

注意: 透视写在被观察元素的父盒子上面

举例(将图片沿x轴旋转60度):
①:没加透视前
在这里插入图片描述
②往父盒子加了透视后:
在这里插入图片描述
相信大家都看出来了,加了透视后,我们很明显的能看到一种前大后小的效果,这就是透视的魅力~ 所以这也是重中之重,要想看到3d效果必须加透视,而且是在父盒子加!

4.3D呈现:transform-style

意义:控制子元素是否开启三维立体环境

语法:

transform-style:flat 子元素不开启3d立体空间 (默认)

transform-style: preserve-3d; 子元素开启立体空间

注意:代码写给父级,但是影响的是子盒子
(这个属性很重要)

还是拿上面盒子倾斜为案例,在加了透视但是没加3D呈现时的效果:
在这里插入图片描述
尽管鼠标放上去了,也看不到任何效果,因为粉色盒子并没有按立体空间来展示,被转换成平面展示了,所以这里就要用到transform-style这个属性,来实现子元素开启立体空间。

当然在加上3D呈现效果后,结果就是第一个案例呈现的效果。


总结

想要实现3D转换效果,千万不要忘记写perspective和transform-style: preserve-3d,并且这两个属性都是加在父盒子上的哟,想要真正的掌握,就赶紧去试试吧~

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 尊敬的同学们, 悦读会新开张啦!我们是校学生会旗下的一个社团,我们的宗旨是通过阅读来来审美愉悦。我们相信,阅读是一种美好的生活方式,它能丰富我们的情感、开阔我们的视野、提升我们的才华。我们希望能够聚集各位喜爱阅读的同学,一起分享书籍、交流心得、探讨人生。如果你对阅读充满热情,那么悦读会是你不容错过的地方! 我们期待你的加入,共同探索阅读的乐趣! ### 回答2: 亲爱的同学们, 大家好!我们校学生会非常高兴地向大家宣布成立了新的社团——“悦读会”。在这个让人心旷神怡的角落,我们将共同追寻阅读的魅力,感受阅读所来的审美愉悦! 阅读,是一扇通往知识的门窗,也是一次心灵的滋养。每当我们打开一本书的时候,仿佛融入了一个崭新的世界,给予我们无限的想象力和创造力。在这里,你会遇见从古至今的伟大文学作品,见证历史的变迁,领略不同文化的风采。而更重要的是,你会找到内心的平静和快乐。 “悦读会”不仅仅是一个读书的地方,更是一片感受美的净土。我们将举办各种形式的活动,包括读书分享会、文艺讲座、艺术展览等等,旨在用美妙的艺术之光点亮校园的每一个角落,为你提供与众不同的审美体验。 在这个社团里,你将遇到志同道合的同学,他们像您一样热爱阅读,乐于交流彼此的心得与感受。无论你喜欢哪个领域的读物,都能找到你的阅读伴侣和知音。或许在每一个静谧的夜晚,我们能一起享受躺在床上的悠然时光,分享心最美丽的文字。 如果你对文学艺术充满热情,如果你希望追寻审美的愉悦,那么请加入我们的“悦读会”。在这里,你将收获别样的人生智慧和情感启发,也将找到自己与他人分享的快乐。 悦读,启迪心灵。加入我们,与书为友,与美为邻。 让我们一起开启这段读书的旅程吧!相信未来的岁月里,“悦读会”将成为我们心灵自由飞翔的翅膀,让我们在阅读的海洋感受无尽的快乐。 期待你的加入! 校学生会 “悦读会”

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值