当前位置:   article > 正文

css实现3d立体魔方_css 实现3d柱子

css 实现3d柱子
今天来做一个简单的3d魔方

先看效果图吧!把这个看会了,一些网上的3d的相册你就都会了

在这里插入图片描述

一、我们先准备好们的html代码
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <title>3d立体魔方</title>
        <meta charset="UTF-8">
    </head>
    <body>
    	<div class="top"></div> 		<!--上 -->
    	<div class="bottom"></div>		<!--下 -->
    	<div class="left"></div>		<!--左 -->
    	<div class="right"></div>		<!--右 -->
    	<div class="after"></div>		<!--后 -->
    	<div class="before"></div>		<!--前 -->
    </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

好了我们html代码就准备完成了,首先我们要有一个3d的思维,在大脑中现象一下魔方是什么样子的,不就是用六个面组成的吗。

二、添加css样式
1、
*{
    margin:0; 							    /* 默认样式去掉边距 */
    padding:0;
}
div{										 /* div通用样式 设置高宽*/
    width: 300px;
    height: 300px;
    opacity:0.5;							/*透明度 半透明*/
}
.top{									 /* 通过类名设置颜色下面都是设置颜色*/
    background-color:brown;				
}
.bottom{
    background-color:blueviolet;
}
.left{
    background-color:blanchedalmond;
}
.right{
    background-color:cadetblue;
}
.after{
    background-color:chocolate;
}
.before{
    background-color:cyan;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

好了到了这一步就相当与把地基打好了,我们开始盖楼了

在这里插入图片描述
你看到的必须是这个效果注意我这里是缩小了,你应该也是和我一样方块都是挨着的,像柱子一样堆着的。这下我们就要开始像纸片一样把他们拼凑起来了。

2、让div重合
div{							
    width: 300px;
    height: 300px;
    position: absolute;		/*在div的通用样式中加上绝对定位*/
}
body{						/*下面这一步是居中让所有的div在屏幕上居中*/
    height: 100vh;
    width: 100vw;
    display: flex;
    justify-content: center;
    align-items: center;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
现在你们看到的是这个效果,明明6个方块怎么只有一个,其实并不是,只是其他的div在这个div的后面,前面这个div挡住我们的视线了所以看不见。

三、开启3d空间
}
body{
    transform-style: preserve-3d;   /*只需要这一条代码开启3d空间*/
    height: 100vh;
    width: 100vw;
    display: flex;
    justify-content: center;
    align-items: center;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在把div拼凑起来

.top{
    background-color:brown;
    transform:rotateX(90deg) translateZ(150px);   /*先旋转在偏移*/
}
.bottom{
    background-color:blueviolet;
    transform:rotateX(-90deg) translateZ(150px);
}
.left{
    background-color:blanchedalmond;
    transform:rotateY(-90deg) translateZ(150px);
}
.right{
    background-color:cadetblue;
    transform:rotateY(90deg) translateZ(150px);
}
.after{
    background-color:chocolate;
    transform:rotateY(180deg) translateZ(150px);
}
.before{
    background-color:cyan;
    transform:rotateY(0deg) translateZ(150px);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在这里插入图片描述
你们看到的应该还是这个样子,其实我们已经完成了魔方的拼接,只是魔方是平放着的我们看不出来,所以做一个动画旋转一下就ok了。你给div加上一点文字更容易观察

四、动画旋转
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <title>3d立体魔方</title>
        <meta charset="UTF-8">
        <style type="text/css">
*{
    margin:0;           
    /* 默认样式去掉边距 */
    padding:0;
}
div{
    width: 300px;
    height: 300px;
    position: absolute;
    opacity: 0.5;
    text-align: center;
    line-height: 300px;
}
body{
    transform-style: preserve-3d;
    height: 100vh;
    animation: fram1 10s ease;    				/*引用动画*/
    width: 100vw;
    display: flex;
    justify-content: center;
    align-items: center;
}

.top{
    background-color:brown;
    transform:rotateX(90deg) translateZ(150px);

}
.bottom{
    background-color:blueviolet;
    transform:rotateX(-90deg) translateZ(150px);
}
.left{
    background-color:blanchedalmond;
    transform:rotateY(-90deg) translateZ(150px);
}
.right{
    background-color:cadetblue;
    transform:rotateY(90deg) translateZ(150px);

}
.after{
    background-color:chocolate;
    transform:rotateY(180deg) translateZ(150px);
}
.before{
    background-color:cyan;
    transform:rotateY(0deg) translateZ(150px);
}
@keyframes fram1{		/*动画旋转X轴与Y轴*/
    0%,100%{
        transform: rotateY(0deg) rotateX(0deg);
    }
    50%{
        transform: rotateY(180deg) rotateX(180deg);

    }
}
        </style>
    </head>
    <body>							<!--加入文字让视觉更加清晰-->
    	<div class="top">1</div> 			
    	<div class="bottom">2</div>		
    	<div class="left">3</div>		
    	<div class="right">4</div>		
    	<div class="after">5</div>		
    	<div class="before">6</div>		
    </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

好了全部代码都在这了,我已经带着你做完了,如果你想做一个3d相册的话,直接给div加上背景图就好background-color替换为background-image
在这里插入图片描述

五、总结

让我们讲讲细节吧!当让这也是最终要的,希望你看到。拼接的过程你们只看到了代码,首先我们制作了六个width:300px与height:300px的div,我们通过position:absolute让他们叠加在了一起,你只需要记住绝对定位会让层级重叠就好了z-inde:可以控制他的层级,好了到最重要的地方了, transform:rotateX(90deg) translateZ(150px);这里为什么我是先旋转在偏移呢?

向前
长方形
长方形 右转
向前
长方形 右转
长方形

总之一句话就是,你右转在向前进 和 你前进在右转你到达的位置是不一样的
就是这个原理。如果你明白了就算是入门了3d还有很多好玩的。等待你慢慢的摸索。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/96782
推荐阅读
相关标签
  

闽ICP备14008679号