本例子只用到了HTML+CSS,通过CSS的3D属性、@keyframes关键帧等知识实现了该动画骰子
效果图如下:
主要功能是,该动画骰子即可旋转展开,也可反向旋转返回原位置,由于是动态效果,所以建议大家将代码复制下来去试试看具体效果哈!
以下是 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3d动画骰子</title>
<link rel="stylesheet" href="3d动画骰子.css">
</head>
<body>
<div class="bigbox">
<div class="box">
<div class="a1">1</div>
<div class="a2">2</div>
<div class="a3">3</div>
<div class="a4">4</div>
<div class="a5">5</div>
<div class="a6">6</div>
<div class="a7">7</div>
<div class="a8">8</div>
<div class="a9">9</div>
<div class="a10">10</div>
<div class="a11">11</div>
<div class="a12">12</div>
</div>
</div>
</body>
</html>
以下是 CSS 代码:
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
background: #000;
}
.bigbox{
perspective: 1600px;
}
.box {
width: 200px;
height: 200px;
position: relative;
margin: 200px auto;
transform-style: preserve-3d;
transform-origin: 100px 100px 100px;
animation: move 6s linear infinite;
}
@keyframes move {
0% {
transform: rotateY(0deg);
}
100% {
transform: rotateY(-360deg);
}
}
.box div {
width: 200px;
height: 200px;
position: absolute;
/* background-color: rgba(255, 255, 255, 0.6); */
background-color: rgba(0, 255, 234, 0.6);
/* background-color: rgba(0, 183, 255, 0.6); */
border: 2px solid white;
border-radius: 12px;
text-align: center;
opacity: 0.4;
box-sizing: border-box;
font: 120px/200px "微软雅黑";
transition: all 2.5s;
}
.a1 {
transform: scale3d(1.5, 1.5, 1.5) translateZ(-100px);
}
.box:hover .a1{
transform: translateZ(380px);
}
.a2 {
transform: scale3d(1.5, 1.5, 1.5) rotateX(90deg) translateZ(-100px);
}
.box:hover .a2{
transform: rotateY(30deg) translateZ(380px);
}
.a3 {
transform: scale3d(1.5, 1.5, 1.5) rotateY(-180deg) translateZ(-100px);
}
.box:hover .a3{
transform: rotateY(60deg) translateZ(380px);
}
.a4 {
transform: scale3d(1.5, 1.5, 1.5) rotateX(-90deg) translateZ(-100px);
}
.box:hover .a4{
transform: rotateY(90deg) translateZ(380px);
}
.a5 {
transform: scale3d(1.5, 1.5, 1.5) rotateY(90deg) translateZ(-100px);
}
.box:hover .a5{
transform: rotateY(120deg) translateZ(380px);
}
.a6 {
transform: scale3d(1.5, 1.5, 1.5) rotateY(-90deg) translateZ(-100px);
}
.box:hover .a6{
transform: rotateY(150deg) translateZ(380px);
}
.a7 {
transform: scale3d(0.8, 0.8, 0.8) translateZ(100px);
}
.box:hover .a7{
transform: rotateY(180deg) translateZ(380px);
}
.a8 {
transform: scale3d(0.8, 0.8, 0.8) rotateX(90deg) translateZ(100px);
}
.box:hover .a8{
transform: rotateY(210deg) translateZ(380px);
}
.a9 {
transform: scale3d(0.8, 0.8, 0.8) rotateY(-180deg) translateZ(100px);
}
.box:hover .a9{
transform: rotateY(240deg) translateZ(380px);
}
.a10 {
transform: scale3d(0.8, 0.8, 0.8) rotateX(-90deg) translateZ(100px);
}
.box:hover .a10{
transform: rotateY(270deg) translateZ(380px);
}
.a11 {
transform: scale3d(0.8, 0.8, 0.8) rotateY(90deg) translateZ(100px);
}
.box:hover .a11{
transform: rotateY(300deg) translateZ(380px);
}
.a12 {
transform: scale3d(0.8, 0.8, 0.8) rotateY(-90deg) translateZ(100px);
}
.box:hover .a12{
transform: rotateY(330deg) translateZ(380px);
}