用CSS写一个简单的3D立方体动画

本文介绍了如何使用CSS创建一个3D立方体动画。首先,通过设置相等的宽高和定位六个子元素来构建立方体的基础结构,然后利用3D旋转和位移将这些元素置于正确位置。接着,通过添加3D视距和开启3D权限,使得立方体在屏幕上呈现。最后,通过定义动画和应用到父元素,实现了立方体的动态效果。

1.思路

  • 先准备一个盒子写相等的宽高,里面放六个相同子盒子标签,宽高都和父元素相等,然后同时将六个子元素定位,再通过3d旋转+位移使六个子元素到达指定位置,成为立方体的六个面,定义动画使其运动起来

2.步骤

  • 1.写好父元素和六个子元素并定义宽高和位置
      <div class="p">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
      </div>
  • 2.给body加视距
      body {
            perspective: 500px;/*以body的视角进行观测下面所有的子元素,形成统一的透视感*/
          }
  • 3.父元素设置3d权限,子元素做3D转化可呈现出来
  .p {
            width: 300px;
            height: 300px;
            margin: 0 auto;
            margin-top: 200px;
            position: relative;
            transform-style: preserve-3d; /* 开启3D 权限  */
            transition: all 4s;
          }
  • 4.设置子元素属性和位置,组成立方体
     .p div {
            position: absolute;/*定位脱标*/
            top: 0;
            left: 0;
            width: 300px;
            height: 300px;
            background-color: rgba(0, 0, 0, 0.5);
            line-height: 300px;
            text-align: center;
            font-size: 100px;
            color: #ffffff;
            border: 2px solid yellow;
          }
          .p div:nth-child(1) {
            transform: translateZ(150px);/*1向前(屏幕外)移动宽的一半,形成立方体第一个面*/
          }
          .p div:nth-child(2) {
            transform: translateX(-150px) rotateY(-90deg);/*2向左移动宽的一半,逆时针再以Y轴为轴旋转90度(),形成立方体第一个面,这里要注意,如果先旋转的话,这个面的XYZ轴方向会发生改变,下面同理*/
          }
          .p div:nth-child(3) {
            transform: translateZ(-150px) rotateY(180deg);
          }
          .p div:nth-child(4) {
            transform: translateX(150px) rotateY(90deg);
          }
          .p div:nth-child(5) {
            transform: translateY(150px) rotateX(-90deg);
          }
          .p div:nth-child(6) {
            transform: translateY(-150px) rotateX(90deg);
          }
  • 5.设置动画,父盒子调用
  @keyframes sp {
            0% {
              transform: rotateY(0deg) rotateX(0deg);
              /* 动画开始时的状态 */
            }
            100% {
              transform: rotateY(360deg) rotateX(360deg);
              /* 动画结束时的状态 */
            }
          }
      .p {
        /*父元素调用动画*/
          animation: sp 2s linear infinite;
      }	

3.效果

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值