CSS3 - 3D 动画小案例 - 魔方

前言 :

今天给大家分享一个小案例(魔方)

下面是一个关于使用 CSS3 创建魔方的案例说明。这个案例展示了如何使用 CSS3 的 3D 变换和动画功能来实现一个交互式的魔方效果

废话不多说直接分享代码

html结构:

<div class="container">
  <div class="cube">
    <!-- 前面 -->
    <div class="face front">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
    <!-- 后面 -->
    <div class="face back">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
    <!-- 右面 -->
    <div class="face right">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
    <!-- 左面 -->
    <div class="face left">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
    <!-- 上面 -->
    <div class="face top">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
    <!-- 下面 -->
    <div class="face bottom">
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item"></div>
    </div>
  </div>
</div>

css样式

/* 容器设置 */
.container {
  width: 200px;
  height: 200px;
  position: absolute;
  perspective: 700px;
  top: calc(50% - 100px);
  left: calc(50% - 100px);
  box-sizing: border-box;
}

/* 魔方设置 */
.cube {
  position: absolute;
  width: 100%;
  height: 100%;
  display: block;
  transform-style: preserve-3d;
  background: black;
  animation: rotatetest 20s linear infinite;
}

/* 面的通用样式 */
.face {
  width: 100%;
  height: 100%;
  font-size: 0;
  position: absolute;
  backface-visibility: hidden;
  background: black;
  border-radius: 7px;
  box-sizing: border-box;
}

/* 小方块的样式 */
.face .item {
  display: inline-block;
  border: 6px solid;
  width: 33%;
  height: 33%;
  border-radius: 12px;
  box-sizing: border-box;
}

/* 各个面的位置设置 */
.face.front {
  transform: translateZ(100px);
}
.face.front .item {
  background: #b71234;
}

.face.back {
  transform: rotateX(-180deg) translateZ(100px);
}
.face.back .item {
  background: #cecece;
}

.face.right {
  transform: rotateY(90deg) translateZ(100px);
}
.face.right .item {
  background: #0046ad;
}

.face.left {
  transform: rotateY(-90deg) translateZ(100px);
}
.face.left .item {
  background: #ffd500;
}

.face.top {
  transform: rotateX(90deg) translateZ(100px);
}
.face.top .item {
  background: #ff5800;
}

.face.bottom {
  transform: rotateX(-90deg) translateZ(100px);
}
.face.bottom .item {
  background: #009b48;
}

/* 动画设置 */
@keyframes rotatetest {
  0% {
    transform: rotateX(0deg) rotateY(0deg);
  }
  25% {
    transform: rotateX(30deg) rotateY(90deg);
  }
  50% {
    transform: rotateX(60deg) rotateY(180deg);
  }
  75% {
    transform: rotateX(120deg) rotateY(270deg);
  }
  100% {
    transform: rotateX(180deg) rotateY(360deg);
  }
}

代码解释

HTML 结构

  • 每个面(frontbackrightlefttopbottom)都包含9个小方块(.item),这些小方块构成了魔方的各个面
  • CSS 样式

  • .container 设置了容器的大小和位置,并启用了3D透视效果。
  • .cube 设置了魔方的基本样式,包括3D变换风格和动画。
  • .face 设置了每个面的基本样式,包括位置和背面隐藏。
  • 每个面的具体样式(如颜色)通过嵌套选择器来定义。
  • @keyframes rotatetest 定义了魔方的旋转动画,使魔方在页面加载后自动旋转

     这个案例展示了如何使用纯 CSS3 创建一个自动旋转的 3D 魔方

   看不如动手做 第一遍复制代码测试一下,第二遍懂了之后自己动手试试吧

                                                                                                                           作者亲测试 

 温馨小留言: 喜欢作者的点赞加关注吧?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值