<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- jQuery引用 -->
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.5.1.min.js"></script>
<title>3D正方体</title>
<style>
* {
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: black;
}
body {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background: linear-gradient(to right, rgb(10, 139, 129), rgb(19, 43, 151));
}
.container {
height: 500px;
width: 500px;
display: flex;
justify-content: center;
align-items: center;
position: relative;
/* transform: rotate3d(1, 1, 0, -30deg); */
transform-style: preserve-3d;
/* 设置元素被查看位置视图 */
perspective: 0px;
/* 设置3D元素基点位置 */
perspective-origin: 0px 0px;
margin-top: 200px;
}
.front,
.back,
.top,
.bottom,
.left,
.right {
height: 200px;
width: 200px;
position: absolute;
}
.front {
background-color: red;
transform: translateZ(100px);
}
.back {
background-color: yellow;
transform: translateZ(-100px);
}
.left {
background-color: pink;
transform: translateX(-100px) rotateY(-90deg);
}
.right {
background-color: greenyellow;
transform: translateX(100px) rotateY(90deg);
}
.top {
background-color: aqua;
transform: translateY(-100px) rotateX(90deg);
}
.bottom {
background-color: blueviolet;
transform: translateY(100px) rotateX(-90deg);
}
.trantions{
transition: 3s;
}
@keyframes rotate {
form {
transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
}
to {
transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg);
}
}
/* 内层立方体 */
.container>span {
display: block;
width: 100px;
height: 100px;
position: absolute;
background-color: blue;
transform-style: preserve-3d;
}
.min_front {
background-color: red;
transform: translateZ(50px);
}
.min_back {
background-color: yellow;
transform: translateZ(-50px);
}
.min_left {
background-color: pink;
transform: translateX(-50px) rotateY(-90deg);
}
.min_right {
background-color: greenyellow;
transform: translateX(50px) rotateY(90deg);
}
.min_top {
background-color: aqua;
transform: translateY(-50px) rotateX(90deg);
}
.min_bottom {
background-color: blueviolet;
transform: translateY(50px) rotateX(-90deg);
}
</style>
</head>
<body>
<div class="container">
<!-- 外层立方体 -->
<!-- 前面 -->
<div class="front">front</div>
<!-- 后面 -->
<div class="back">back</div>
<!-- 左面 -->
<div class="left">left</div>
<!-- 右面 -->
<div class="right">right</div>
<!-- 上面 -->
<div class="top">top</div>
<!-- 下面 -->
<div class="bottom">bottom</div>
<!-- 内层立方体 -->
<span class="min_front"></span>
<span class="min_back"></span>
<span class="min_left"></span>
<span class="min_right"></span>
<span class="min_top"></span>
<span class="min_bottom"></span>
</div>
<script>
// 使用jquery获取元素
var con = $('.container')[0];
// 获取父元素下所有子元素
con.addEventListener('mouseover', function (e) {
var div = con.children;
con.style.transform = 'rotate3d(' 1 ',' 1 ',' 0 ',' '-' 30 'deg)'
div[0].style.transform = 'translateZ(' 200 'px)'
div[1].style.transform = 'translateZ(' '-' 200 'px)'
div[2].style.transform = 'translateX(' '-' 200 'px)' 'rotateY(' '-' 90 'deg)'
div[3].style.transform = 'translateX(' 200 'px)' 'rotateY(' 90 'deg)'
div[4].style.transform = 'translateY(' 200 'px)' 'rotateX(' '-' 90 'deg)'
div[5].style.transform = 'translateY(' '-' 200 'px)' 'rotateX(' 90 'deg)'
con.style.animation = 'rotate 30s infinite alternate linear'
})
</script>
</body>
</html>
网友评论
我要评论