3d怎么把两个面拼接在一起_0202年了,你还不会用CSS3做3D吗?

a5357cb90d185d27320f3ddd4e94d17d.png 83f11f9488fd75c436e5a1533050ad44.gif

是新朋友吗?记得先点蓝字关注我哦~

什么是CSS?

CSS是Cascading Style Sheets的简称,国内一般翻译为“层叠样式表”,是负责实现html和xml标签样式的一门语言。简单来说,我们在网上看到的千姿百态的网页 样式,都是用CSS来实现的。以下图为例看一下CSS的具体作用。 左边是没有CSS样式的网页,右边是添加了CSS样式表的页面:

a7ae8c11f66a78e1eff0bfba8ebb14ab.png

我们可看到,CSS可以令网页样式和布局千变万化,丰富多彩。但是,在CSS2的时代,网页样式的设计一直停留在平面的2D空间内,虽然有很多优秀的网页设计师通过巧妙的设计在视觉上产生类似3D的效果,但是网页布局却一直不支持3D空间的实现。而W3C在CSS2的下一代标准,CSS3里增加了实现3D效果的样式。

我们可以看一下3D立方体的轮播图:

9bda2d8a78cd51d7a8ae8cd03d96b845.gif

是不是很炫酷?? 这篇文章将为大家介绍如何利用CSS3实现一个3D效果的立方体。 CSS3实现立方体 首先,我们给一个div添加开启3D效果的CSS样式代码:transform-style: preserve-3d; 添加了这句样式之后,这个 div 里的区域就变成了一个 3D 空间。 我们可以在这个 div 里面添加任何子元素,并对子元素进行任何位置的位移和角度的转换。
<body>  <div class="box">div>body>.box{  transform-style: preserve-3d;  width: 100%;  height: 100%;}
下图的2个坐标很好的诠释了添加transform-style: preserve-3d;前后页面空间坐标的变化。再添加了3d样式后,页面从只有x,y轴的2d坐标变成了带有x,y,z三个坐标轴的3D空间。

b2a14c73fb1e2a9fdf5ef3c283894219.png

  • 为了形成一个立方体,我们需要写出6个宽高相等的正方形的div,并为每个面添加不同的背景色,代码如下所示:(左侧为页面效果)。

36c6fe37e57ca9e176edb0daa867dd4c.png

  • 为了让这6个面通过位移和旋转拼接成一个立方体,我们需要把这6个面通过position定位重叠在一起,同时添加top,left属性让这6个div居于页面中央:

9820cffa9bc8980e349a29630d92a46a.png

CSS3通过transform属性下的rotate和translate,可以旋转和位移html元素。为了组成立方体,我们需要让2个面沿X抽旋转90度,并且沿Y抽向不同的方向位移每个div长度的一半(此例中位移100px)。同理,还有2个面需要沿Y抽旋转90度,并且沿X抽向不同的方向位移100px。最后的2个面不需要旋转,只要沿Z抽向不同的方向位移100px。
  • 以下是1,2两个面沿X抽旋转90度的样式代码,为了方便看到旋转效果,我们让整个.box旋转一定的角度:

4202c1ab79d495b6061d21d9803ae1f6.png

  • 然后我们让1,2两个面沿Y轴向相反的方向位移100px(每个div长宽的一半),我们可以看到下面的效果:

46d492672f004d36993a4eb2bae5b758.png

  • 同样,我们让3,4两个面沿Y抽旋转90度:

a06acc478da8b6eb9c9221ccfc33a0cf.png

  • 然后我们让3,4两个面沿Y轴向相反的方向位移100px,得到下面的效果:

06b30b64584d12864502c7319390dda0.png

  • 最后,我们只要让5,6最后2个面分别沿着Z轴位移100px(每个面的宽高的一般),就可以拼成一个正方体了。

7c864431b9f86189769a32079304f21d.png

  • 下面我们加一些动画效果来让这个立方体动起来。我们先看一下动画效果:

5f6f755524ae9eefc1f2309fe116d98b.gif

下面我们看一下实现动画效果的样式代码:
.box{  transform-style: preserve-3d;  transform: rotateX(-20deg) rotateY(70deg);  animation: move 5s linear infinite;   width: 100%;  height: 100%;}@keyframes move{  0%{    transform:rotateX(0deg) rotateY(0deg);  }   50%{    transform:rotateX(180deg) rotateY(180deg);  }  100%{    transform:rotateX(360deg) rotateY(360deg);  }   }.face1{  background-color: #333;  transform: translateY(150px) rotateX(270deg);}.face2{  background-color: #111;  transform: translateY(-150px) rotateX(90deg);}.face3{  background-color: #666;  transform:translateX(150px) rotateY(90deg);}.face4{  background-color: #999;  transform:translateX(-150px) rotateY(90deg);}.face5{  background-color: #777;  transform: translateZ(150px);}.face6{  background-color: #555;  transform: translateZ(-150px);} 
实现动画效果用的是CSS3的animation,关于animation的语法可以参考W3C的官网: https://www.w3school.com.cn/cssref/pr_animation.asp。

(以下截图来自W3C官网)

cfa78eda117a2d500a032e9a5fa57c99.png

到这里,我们就实现了一个可以无限旋转的3D立方体。顺便提一下,通过修改上图的timing-function等各种参数,可以实现多种速度曲线,旋转频率等效果哟。 别人家的动画

下面我们再看一些别人家的炫酷效果吧。

6b62798c631b6cb8735443892dbd2a08.gif

72c3649647f122f2c065ed8dfd25e4a4.gif

657d18676dcc88d6d7874195a0b46f12.gif

b157329c1ae133c655f12acea23db8dc.gif

让我们一起为前端页面的效果添砖加瓦吧。 56dbd0019e5f3cc552eaea5a43212720.png

e9c239fefe64a418782d3937546573f4.png

关注葫芦APP知识中心获取最新知识分享

2713f8c4778bb8e65be9628e5225f1a2.png

关注葫芦APP获取最新产品资讯

点“分享”和“在看”的都心想事成

d258044c8c4cb2635529b6c16c4cb6fa.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值