CSS实现立方体

Css制作立方体

这周在逆战班学习了过渡(transition),2D动画(transform),渐变(gradient),以及3D动画特效。让我能够敲出很多很炫很好看的动画特效。今天想讲一下如何制作一个立方体。

首先,一个立方体需要六个面,所以我们可以用6个div放在一个大的div里,也可以用ul,li列表来制作。

<div class="wrap">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
    <div class="box4"></div>
    <div class="box5"></div>
<div>

接下来需要添加静态样式。

.wrap {width: 500px;height: 500px;margin: 50px auto;border: 1px solid pink;position: relative;/* 让wrap盒子变成一个3d空间 */transform-style: preserve-3d;}

/* 给所有的子div设置同样的宽高200像素 让它们都绝对定位 并且在父元素中居中显示 */

.wrap div {width: 200px;height: 200px;position: absolute;left: 0;right: 0;top: 0;bottom: 0;margin: auto;

}

/* 给每个div设置各自的颜色 并让第一个div沿着Z轴向前移动100像素,作为立方体的前面*/

.box1 {background: red;transform:translateZ(100px);}

/* 让第二个div先沿Y轴顺时针旋转90°(此时坐标轴也跟着旋转了90°),再沿着旋转后的Z轴向右移动100像素,作为立方体的右面 */

​    .box2 {background: orange;transform: rotateY(90deg) translateZ(100px);}

/* 让第三个div先沿X轴逆时针旋转90°,再沿着旋转后的Z轴向下移动100像素,作为立方体的下面 */

  .box3 {background: yellow;transform:rotateX(-90deg) translateZ(100px);}

/* 让第四个div沿着Z轴向后移动100像素,作为立方体的后面,与第一个div相对 */

​    .box4 {background: green;transform:translateZ(-100px);}

/* 让第五个div先沿Y轴逆时针旋转90°,再沿着旋转后的Z轴向左移动100像素,作为立方体的左面,与第二个div相对 */

​    .box5 {background: blue;transform:rotateY(-90deg) translateZ(100px);}

/* 让第六个div先沿X轴顺时针旋转90°,再沿着旋转后的Z轴向上移动100像素,作为立方体的上面,与第三个div相对 */

​    .box6 {background:  purple;transform:rotateX(90deg) translateZ(100px);}

在这里插入图片描述

这样一个立方体我们就已经布置完成了,但是这样并不能看到效果,所以我们再给.wrap这个div添加旋转动画,来方便我们观察.

设置动画

@keyframes play {

​		0%{transform: rotateX(0) rotateY(0) rotateZ(0);}

​        100%{transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg);}

}

把动画添加给.wrap的div

.wrap {animate: play 5s linear infinite;

}

在这里插入图片描述
此时,我们的立方体就可以旋转起来了,我们也就可以看到效果了.

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在iOS上使用CSS实现3D立方体旋转可以通过使用CSS3的transform属性和perspective属性来实现。以下是一个简单的例子: HTML代码: ``` <div class="cube"> <div class="side">1</div> <div class="side">2</div> <div class="side">3</div> <div class="side">4</div> <div class="side">5</div> <div class="side">6</div> </div> ``` CSS代码: ``` .cube { width: 100px; height: 100px; position: relative; transform-style: preserve-3d; transition: transform 1s; perspective: 800px; } .side { position: absolute; width: 100px; height: 100px; line-height: 100px; text-align: center; font-size: 48px; color: white; background: black; opacity: 0.8; border: 2px solid white; } .side:nth-child(1) { transform: rotateY(0deg) translateZ(50px); } .side:nth-child(2) { transform: rotateY(90deg) translateZ(50px); } .side:nth-child(3) { transform: rotateY(180deg) translateZ(50px); } .side:nth-child(4) { transform: rotateY(-90deg) translateZ(50px); } .side:nth-child(5) { transform: rotateX(90deg) translateZ(50px); } .side:nth-child(6) { transform: rotateX(-90deg) translateZ(50px); } .cube:hover { transform: rotateX(360deg) rotateY(360deg); } ``` 在这个例子中,我们使用了一个包含6个面的div元素,并使用transform属性将其转换为3D立方体。然后,我们使用nth-child选择器来为每个面设置不同的旋转角度。最后,我们使用hover伪类选择器来实现鼠标悬停时的动画效果。 注意:该代码只能在支持CSS3的浏览器上运行,如Chrome、Safari等。在移动端设备上也可以使用该代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值