• 一篇文章教会你利用html5和css3实现3D立方体效果图


    【一、项目背景】

    随着HTML5 CSS3的出现和发展,使得我们的网页可以实现更加复杂的效果,也使得我们的浏览体验更加丰富,所以今天我们将制作一个正方体的3D效果。

    【二、项目分析】

    想要利用CSS3实现3D立方体,就要清楚立方体是由六个面组成,分上下左右和前后,考虑这些可以帮助我们更好的融入CSS3的代码。

    因此我设置了6个div,作为立方体的6个面。因为定位的原因,一开始所有的盒子都是面对着屏幕这面的,因此要赋予每个面不一样的值,即不一样的位置它才能展现出来。

    【三、需要的工具】

    Adobe Dreamweaver

    【四、项目目标】

    实现3的l立方体旋转,鼠标移上去实现缩放效果。

    【五、项目实现】

    1、打开Adobe Dreamweaver,新建html文档。把标题改为“3d立方体”。

    image

    2、在body标签,创建一个div盒子 ,给它class属性,在外层div里面在创建6个div表示立方体的六个面,同样给它们 class属性。

    <body>
        <div class="box">
          <div class="box2">
            <div class="box-2">top</div>
            <div class="box-2">btm</div>
            <div class="box-2">left</div>
            <div class="box-2">right</div>
            <div class="box-2">face</div>
            <div class="box-2">back</div>
          </div>
        </div>
    </body>
    

    3、创建CSS样式

    <style type="text/css">
    .box {
       200px;
      height: 200px;
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      margin: auto;
      transition: all 2s;
      transform-style: preserve-3d;
      transform: rotateX(15deg) rotateY(-15deg);
    }
    .box:hover {
      transform: rotateX(300deg) rotateZ(300deg) rotateY(-300deg) scale(0.5);
    }
    .box .box-2 {
       100px;
      height: 100px;
      text-align: center;
      line-height: 100px;
      font-size: 1.2em;
      position: absolute;
      top: 0;
      left: 0;
    }
    .box .box-2:nth-child(1) {
      /*小立方体第一面*/
      background: rgba(225,0,0,0.5);
      transform: rotateX(90deg) translateZ(50px); #角度 偏移量
    }
    .box .box-2:nth-child(2) {
        /*小立方体第二面*/
      background: rgba(255,255,0,0.5);
      transform: rotateX(-90deg) translateZ(50px);
    }
    .box .box-2:nth-child(3) {
        /*小立方体第三面*/
      background: rgba(225,0,255,0.5);
      transform: rotateY(-90deg) translateZ(50px);
    }
    .box .box-2:nth-child(4) {
         /*小立方体第四面*/
      background: rgba(0,255,0,0.5);
      transform: rotateY(90deg) translateZ(50px);
    }
    .box .box-2:nth-child(5) {
         /*小立方体第五面*/
      background: rgba(225,0,0,0.5);
      transform: translateZ(50px);
    }
    .box .box-2:nth-child(6) {
        /*小立方体第六面*/
      background: rgba(0,0,255,0.5);
      transform: rotateY(180deg) translateZ(50px);
    }
    </style>
      </head>
      <body>
        <div class="box">
          <div class="box2">
            <div class="box-2">top</div>
            <div class="box-2">btm</div>
            <div class="box-2">left</div>
            <div class="box-2">right</div>
            <div class="box-2">face</div>
            <div class="box-2">back</div>
          </div>
        </div>
    </body>
    </html>
    

    方法说明:

    rotateX() 方法

    通过 rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转。

    rotateY() 旋转

    通过 rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转。

    rotateZ() 旋转

    通过 rotateZ() 方法,元素围绕其 Z 轴以给定的度数进行旋转。

    下表是部分属性所代表的含义:

    image

    4、运行一下看下效果;点击F12运行。

    image

    5、呈现的效果如下图所示。

    image

    可以看到效果基本上可以 ,可是鼠标移上去没有效果。

    6、添加鼠标移上去缩放的效果

    .box:hover{
        transform: rotateX(300deg) rotateZ(300deg) rotateY(-300deg) scale(0.5);
    
      } # scale是缩放倍数
    

    7、外层再添加一个3d立方体形成叠加效果

    body代码:

    <div class="box">
    <div class="box-1">top</div>
    <div class="box-1">btm</div>
    <div class="box-1">left</div>
    <div class="box-1">right</div>
    <div class="box-1">face</div>
    <div class="box-1">back</div>
    </div>
    

    CSS样式代码

    <style type="text/css">
    .box .box-1{
         200px;
        height: 200px;
        text-align: center;
        line-height: 200px;
        font-size: 2em;
        position: absolute;
        top: 0;
        left: 0;
      }
      .box .box-1:nth-child(1){
        /*大立方体第一面*/
        background: rgba(225,0,0,0.5);
        transform:rotateX(90deg) translateZ(100px);
    
      }.box .box-1:nth-child(2){
             /*大立方体第二面*/
        background: rgba(255,255,0,0.5);
        transform:rotateX(-90deg) translateZ(100px);
    
      }.box .box-1:nth-child(3){
            /*大立方体第三面*/
        background: rgba(225,0,255,0.5);
        transform:rotateY(-90deg) translateZ(100px);
      }.box .box-1:nth-child(4){
             /*大立方体第四面*/
        background: rgba(0,255,0,0.5);
        transform:rotateY(90deg) translateZ(100px);
    
      }.box .box-1:nth-child(5){
            /*大立方体第五面*/
        background: rgba(225,0,0,0.5);
          transform:translateZ(100px);
      }.box .box-1:nth-child(6){
            /*大立方体第六面*/
        background: rgba(0,0,255,0.5);
        transform:rotateY(180deg) translateZ(100px);
      }
    </style>
    

    【六、效果展示】

    1、点击运行,效果如下图所示。

    image

    2、鼠标移到立方体上,缩放效果展示,如下图所示。

    image

    【七、总结】

    1、整个效果写出来,还是比较简单的,只要明白各个命令的意思,剩下的就是组织一下逻辑而已。

    2、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

    3、CSS样式的效果不止这些,还有更加炫酷的效果,值得大家去学习。

    4、实现的方法3d立方体的方法有很多,但这是最简单的一种。

    5、如果需要本文源码,请在公众号后台回复“立方体”四个字获取。

    看完本文有收获?请转发分享给更多的人

    IT共享之家

    入群请在微信后台回复【入群】

    IT共享之家.jpg

  • 相关阅读:
    Vmstat主要关注哪些数据?
    Swap是个什么东东?
    Buffers与cached啥区别
    做错的题目——关于构造器返回值
    做错的题目——this的指向
    JS判断一个数是否为质数
    数组扁平化
    JS实现快速排序
    正则实现千分符
    获取鼠标的当前位置
  • 原文地址:https://www.cnblogs.com/dcpeng/p/13442451.html
Copyright © 2020-2023  润新知