HTML动画XYZ轴的用法详解

HTML动画XYZ轴的用法详解

我将通过创建一个旋转的正方体讲解H5 xyz轴的具体用法

首先定义一个盒子,盒子内先放一张平面(后面会根据这张平面弄
出六个面使其成为一个正方体)

复制并打开代码你会看到一个正方体在旋转,不要着急,马上带你分析代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    @keyframes zhuan {
        from{
            transform: rotateY(0);
        }
        50%{
            transform: rotateY(190deg) rotateX(45deg);
        }
        to{
            transform: rotateY(360deg);
        }
    }

    #box{
        position: relative;
        width: 300px;
        height: 300px;
        /*border: 1px red solid ;*/
        text-align: center;
        margin: 100px auto 0;
        font-size: 100px;
        line-height: 300px;
        transform-style: preserve-3d;
        animation: zhuan 5s linear infinite;
    }
    #box>div{
        width: 100%;
        height: 100%;
        position: absolute;
        left: 0;
        right: 0;
    }
    #box>div:nth-child(1){background: yellow;transform: translateZ(150px)}
    #box>div:nth-child(2){background: lightgreen; transform: translateZ(-150px) rotateY(180deg)}
    #box>div:nth-child(3){background: lightcoral;transform: rotateY(90deg) translateZ(150px)}
    #box>div:nth-child(4){background: lightblue;transform: rotateY(-90deg) translateZ(150px)}
    #box>div:nth-child(5){background: lightgoldenrodyellow;transform:rotateX(-90deg) translateZ(-150px) rotateY(180deg)}
    #box>div:nth-child(6){background: lightgrey;transform: rotateY(-180deg) translateY(150px) rotateX(-90deg) rotateZ(180deg)}





</style>
<body>
<div id="box">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</div>


</body>
</html>

我的思路是这样的…

1.创建一个盒子

要给这个盒子中要插入很多div标签,每个div标签都要是一个平面,
用来组成这个正方体。所以要给大盒子中设置一些共有属性,并且
必须在盒子中打开3d开关,否则实现不了3d的旋转

对应代码:

  #box{
        position: relative;
        width: 300px;
        height: 300px;
        /*border: 1px red solid ;*/
        text-align: center;
        margin: 100px auto 0;
        font-size: 100px;
        line-height: 300px;
        transform-style: preserve-3d;
        animation: zhuan 5s linear infinite;
    }
    #box>div{
        width: 100%;
        height: 100%;
        position: absolute;
        left: 0;
        right: 0;
    }

2.设置旋转

为什么要设置旋转呢?因为我要通过旋转来调试我得接下来操作
xyz轴是否正确,也就是每个面是否到了应该去的位置(就跟拼拼图
类似)。通过旋转我能观察到我的正方体成型情况,以方便进行修
改代码。

对应代码:

    @keyframes zhuan {
        from{
            transform: rotateY(0);
        }
        50%{
            transform: rotateY(190deg) rotateX(45deg);
        }
        to{
            transform: rotateY(360deg);
        }
    }

3.开始"拨弄"XYZ轴,将每个div对应的面拼出一个正方体

先看代码吧

#box>div:nth-child(1){background: yellow;transform: translateZ(150px)}
#box>div:nth-child(2){background: lightgreen; transform: translateZ(-150px) rotateY(180deg)}
#box>div:nth-child(3){background: lightcoral;transform: rotateY(90deg) translateZ(150px)}
#box>div:nth-child(4){background: lightblue;transform: rotateY(-90deg) translateZ(150px)}
#box>div:nth-child(5){background: lightgoldenrodyellow;transform:rotateX(-90deg) translateZ(-150px) rotateY(180deg)}
#box>div:nth-child(6){background: lightgrey;transform: rotateY(-180deg) translateY(150px) rotateX(-90deg) rotateZ(180deg)}
看完代码是不是很萌币?再明确一个点,那就是只设置子代1时带红框的白色面(也就是下面的蓝色面)其实是最初始的位置,6个面的位置上都是根据这个原始面进行调整位置的,xyz轴的布局如下。

在这里插入图片描述

只设置子代1:
在这里插入图片描述
为了观察设置了旋转,我们能看出黄色面与原始面产生了一块距离,用到的属性transform: translateZ(150px)是在结合xyz轴看一下,黄色面果然是根据Z轴远离的,同理,后页面可与前页面类似。
这时候你可能会问,前后的页面解决了,那上下和左右怎么办?其实和简单,通过rotate属性将页面设置旋转就可以了,再配合移动就可实现这么一个正方体了,后面的交给你们了,弄会了这个正方体,关于xyz轴的旋转应该就不是问题了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
03-31 855
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹蓝锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值