1. 程式人生 > >CSS3實現3D透明立體盒子

CSS3實現3D透明立體盒子

想要利用CSS3實現透明3D立體盒子

就要清楚立方體是由六個面組成,分上下左右和前後,考慮這些可以幫助我們更好的融入CSS3的程式碼

因此我設定了6個div,作為立方體的6個面

因為定位的原因,一開始所有的盒子都是面對著螢幕這面的,因此要賦予每個面不一樣的值,即不一樣的位置 它才能展現出來。

.trangel div:nth-of-type(1){
		left: 0;
		top:-100px;
	    background: -webkit-radial-gradient(rgba(20, 20, 20, 0.1), #000000);
		-webkit-transform-origin:bottom;    /*設定旋轉元素的基點位置:從底部開始*/
		-webkit-transform: rotateX(90deg);  /*垂直旋轉90°*/
				
	}

以上是對第一個盒子的樣式,先是向上移動-100px的距離,然後再垂直旋轉90°,

 做好了一個面,其實其他的面就好理解了。

有程式碼註釋,快去自己實現一下效果吧!!!

接下來是全部的程式碼:     

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
<style>
	.wrap{
		width: 100px;
		height: 100px;
		padding: 100px;
		border: 1px solid black;
		margin: 50px auto;
		position: relative;
		-webkit-perspective-origin:right top;  /*可見面*/
		-webkit-perspective:600px;			/*可見立體長度*/
		}
	.trangel{
		width: 100px;
		height: 100px;
		position: relative;
		-webkit-transform-style: preserve-3d;	/*編制3D舞臺效果*/
		transition: 1s all;  /*建立一秒的過渡屬性*/
		}
	.trangel div{
		position: absolute;
		width: 100px;
	     height: 100px;		
		color: #fff;
		line-height: 100px;
		text-align: center;
				
	}
	.trangel div:nth-of-type(1){
		left: 0;
		top:-100px;
		background: -webkit-radial-gradient(rgba(20, 20, 20, 0.1), #000000);
		-webkit-transform-origin:bottom;    /*設定旋轉元素的基點位置:從底部開始*/
		-webkit-transform: rotateX(90deg);  /*垂直旋轉90°*/			
	}
	.trangel div:nth-of-type(2){
		left: -100px;
		top: 0;
		background: -webkit-radial-gradient( #000000, rgba(20, 20, 20, 0.1));
		-webkit-transform-origin: right;
		-webkit-transform: rotateY(-90deg);
	}
	.trangel div:nth-of-type(3){
		background: -webkit-radial-gradient( #000000, rgba(20, 20, 20, 0.1));
		left: 0px;
		top: 0;				
		}
	.trangel div:nth-of-type(4){
		left: 0px;
		top: 100px;
		background: -webkit-radial-gradient(rgba(0, 0, 0, 0), #000000);
		-webkit-transform-origin: top;
		-webkit-transform: rotateX(-90deg);
	}
	.trangel div:nth-of-type(5){
		left: 100px;
		top: 0px;
		background: -webkit-radial-gradient(#000000, rgba(20, 20, 20, 0.1));
		-webkit-transform-origin:left;
		-webkit-transform: rotateY(90deg);
	}
	.trangel div:nth-of-type(6){
		left: 0px;
		top: 0px;
		background: -webkit-radial-gradient(#000000, rgba(20, 20, 20, 0.1));
		-webkit-transform:translateZ(-100px) rotateX(180deg);
	}
	.wrap:hover .trangel{
		-webkit-transform: rotateX(180deg) rotateY(360deg) rotateZ(20deg);
	}
		</style>
	</head>
	<body>
		<div class="wrap">
			<div class="trangel">
				<div>1</div>
				<div>2</div>
				<div>3</div>
				<div>4</div>
				<div>5</div>
				<div>6</div>
			</div>			
		</div>
	</body>
</html>