利用CSS3属性在页面中写出立体的3d盒子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
/*
如果有多个元素都有3d效果,那么只需要给最外成的祖先元素添加perspective即可
*/
/*清除需要的样式*/
ul {
margin: 0;
padding: 0;
list-style: none;
}
/*给body添加3D效果,并加上视距*/
body {
transform-style: preserve-3d;
perspective: 500px;
}
/* 给盒子添加视距*/
.box {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
transform-style: preserve-3d;
transition: all 5s;
transform: rotateY(0deg) rotateX(0deg); }
/*body:hover的过渡效果*/
body:hover .box {
transform: rotateY(360deg) rotateX(360deg);
}
/*接下来就是角度还有距离的偏移以及偏转*/
.item {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 200px;
text-align: center;
line-height: 200px;
color: #fff;
font-size: 72px;
background: rgba(0, 0, 0, .6);
box-sizing: border-box;
border: 2px solid #eee;
transition: all 5s;
}
.item:nth-child(1) {
transform: rotateX(90deg) translateZ(100px);
}
.item:nth-child(2) {
transform: rotateX(-90deg) translateZ(100px);
}
.item:nth-child(3) {
transform: rotateY(-90deg) translateZ(100px);
}
.item:nth-child(4) {
transform: rotateY(90deg) translateZ(100px);
}
.item:nth-child(5) {
transform: translateZ(100px);
}
.item:nth-child(6) {
transform: rotateY(180deg) translateZ(100px);
}
.box:hover .item:nth-child(1) {
transform: rotateX(90deg) translateZ(150px);
}
.box:hover .item:nth-child(2) {
transform: rotateX(-90deg) translateZ(150px);
}
.box:hover .item:nth-child(3) {
transform: rotateY(-90deg) translateZ(150px);
}
.box:hover .item:nth-child(4) {
transform: rotateY(90deg) translateZ(150px);
}
.box:hover .item:nth-child(5) {
transform: translateZ(150px);
}
.box:hover .item:nth-child(6) {
transform: rotateY(180deg) translateZ(150px);
}
</style>
</head>
<body>
<ul class="box">
<li class="item">上</li>
<li class="item">下</li>
<li class="item">左</li>
<li class="item">右</li>
<li class="item">前</li>
<li class="item">后</li>
</ul>
</body>
</html>