css制作一个带数字的3d立方体

注意:3D转换中,旋转前后的X Y Z轴方向就会改变。但只要人对着某个平面位置随着一起旋转时,其X Y Z位置相对人时都不会改变。

思路:把6个大小形同的盒子放在一起,然后进行旋转或平移,得到立方体。

难点:旋转时的参考标准怎么解决。

解决方法:对某个立方体的平面进行旋转时,人和该平面一起旋转,相对于人来说,其对面的X Y Z轴位置一直没变。

<!DOCTYPE html>
<html>
<head>
	<title>3D立方体</title>
	<style type="text/css">
	*{margin:0;padding:0;}
		body{
			background:grey;
		}
		.box{
			width:500px;
			height:300px;
			/*border:1px solid red;*/
			margin:300px auto;
			position:relative;
			/*人眼位置也可以不写,认为在无限远的地方*/
			/*perspective:800px;
			perspective-origin:center center;*/
			/*设置模式为3d模式*/
			transform-style:preserve-3d;
			/*设置2次角度的旋转,前后的参考点发生变化,第一次平面座标系的Y轴,第二次是转动后的X轴,不是原平面座标系的X轴,同时注意左手定则。*/
			transform:rotateY(30deg) rotateX(-15deg);
		}

		.box div{
			width:300px;
			height:300px;
			border:1px solid blue;
			position:absolute;
			top:0;
			left:0;
			color:white;
			font-size:40px;
			transform-style:preserve-3d;
			text-align:center;
			line-height:300px;
		}

		.box div:nth-child(2){
			/*一个平面在中心位置按照Y轴,根据左手定则(大拇指向下为Y轴,四指指向为转动方向为正,反之为负.),先逆时针转180度,后严Z轴平移300px*/
			transform:rotateY(180deg) translateZ(300px);
		}

		.box div:nth-child(4){
			/*实测发现,不管是按照原点旋转,还是按指定位置旋转,旋转后的参考位置及方向就改变,*/
			/*解决3维空间旋转后辨别X Y Z轴方向,可把当前平面的X轴为右手边,Y轴向下,旋转时,人也跟着旋转,则该人面对该平面时的原3维X Y Z轴方向不变/*/
			transform:rotateY(270deg) translateX(-150px) translateZ(150px);
			
		}

		.box div:nth-child(3){
			transform-origin:right center;
			transform:rotateY(90deg) translateX(300px);
		}

		.box div:nth-child(6){
			
			transform:rotateX(-90deg) translateZ(150px) translateY(150px);
		}
		.box div:nth-child(5){
			
			transform:rotateX(90deg) translateZ(150px) translateY(-150px);
		}
	</style>
</head>
<body>
	<div class='box'>
		<div class="c1">1</div>
		<div class="c2">2</div>
		<div class="c3">3</div>
		<div class="c4">4</div>
		<div class="c5">5</div>
		<div class="c6">6</div>
	</div>
</body>
</html>

效果如下:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章