console
let button = document.querySelector("button")
face_list=["rotateX(360deg) rotateY(360deg)",
"rotateX(360deg) rotateY(90deg)",
"rotateX(360deg) rotateY(180deg)",
"rotateX(360deg) rotateY(270deg)",
"rotateX(270deg) rotateY(360deg)",
"rotateX(90deg) rotateY(360deg)"
]
button.addEventListener("click",function(){
document.querySelectorAll(".box").forEach(function(boxObj){
boxObj.style.animation=`dice 0.5s alternate running`;
boxObj.addEventListener("animationend",function(){
boxObj.style.transform=`${face_list[Math.floor(Math.random()*6)]}`;
boxObj.style.animation=``;
})
})
})
<html>
<body>
<div class="box">
<div class="face front">
<div class="point"></div>
</div>
<div class="face left">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face back">
<div class="point"></div>
<div class="point" style="align-self: center"></div>
<div class="point" style="align-self: flex-end"></div>
</div>
<div class="face right">
<div class="point"></div>
<div class="point"></div>
<hr style="width:100%; border:0">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face top">
<div class="point"></div>
<div class="point"></div>
<div class="mid"><div class="point"></div></div>
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face bottom">
<div class="point"></div>
<div class="point"></div>
<div class="mid">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="point"></div>
<div class="point"></div>
</div>
</div>
<div class="box">
<div class="face front">
<div class="point"></div>
</div>
<div class="face left">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face back">
<div class="point"></div>
<div class="point" style="align-self: center"></div>
<div class="point" style="align-self: flex-end"></div>
</div>
<div class="face right">
<div class="point"></div>
<div class="point"></div>
<hr style="width:100%; border:0">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face top">
<div class="point"></div>
<div class="point"></div>
<div class="mid"><div class="point"></div></div>
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face bottom">
<div class="point"></div>
<div class="point"></div>
<div class="mid">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="point"></div>
<div class="point"></div>
</div>
</div>
<div class="box">
<div class="face front">
<div class="point"></div>
</div>
<div class="face left">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face back">
<div class="point"></div>
<div class="point" style="align-self: center"></div>
<div class="point" style="align-self: flex-end"></div>
</div>
<div class="face right">
<div class="point"></div>
<div class="point"></div>
<hr style="width:100%; border:0">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face top">
<div class="point"></div>
<div class="point"></div>
<div class="mid"><div class="point"></div></div>
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face bottom">
<div class="point"></div>
<div class="point"></div>
<div class="mid">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="point"></div>
<div class="point"></div>
</div>
</div>
<div class="box">
<div class="face front">
<div class="point"></div>
</div>
<div class="face left">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face back">
<div class="point"></div>
<div class="point" style="align-self: center"></div>
<div class="point" style="align-self: flex-end"></div>
</div>
<div class="face right">
<div class="point"></div>
<div class="point"></div>
<hr style="width:100%; border:0">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face top">
<div class="point"></div>
<div class="point"></div>
<div class="mid"><div class="point"></div></div>
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face bottom">
<div class="point"></div>
<div class="point"></div>
<div class="mid">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="point"></div>
<div class="point"></div>
</div>
</div>
<div class="box">
<div class="face front">
<div class="point"></div>
</div>
<div class="face left">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face back">
<div class="point"></div>
<div class="point" style="align-self: center"></div>
<div class="point" style="align-self: flex-end"></div>
</div>
<div class="face right">
<div class="point"></div>
<div class="point"></div>
<hr style="width:100%; border:0">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face top">
<div class="point"></div>
<div class="point"></div>
<div class="mid"><div class="point"></div></div>
<div class="point"></div>
<div class="point"></div>
</div>
<div class="face bottom">
<div class="point"></div>
<div class="point"></div>
<div class="mid">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="point"></div>
<div class="point"></div>
</div>
</div>
<button style="width:100%;margin-top:50px; padding:0 200px;">点击摇骰</button>
</body>
<html>
*{
margin: 0;
padding: 0;
}
body{
width: 60%;
margin: 0 auto;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
}
.box{
width: 100px;
height: 100px;
margin-top:30px;
transform-style: preserve-3d;
transition: all 0.3s;
transform: rotateX(90deg) rotateY(360deg);
}
@keyframes dice{
from{
transform: rotateX(0deg) rotateY(0deg);
}
to{
transform: rotateX(1080deg) rotateY(1080deg);
}
}
.face{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: peachpuff;
}
.point{
width: 30%;
height:30%;
border-radius:50%;
background-color: rgba(8, 74, 218, 0.966);
}
.front{
transform: translateZ(50px);
display: flex;
align-items: center;
justify-content: center;
}
.left{
display: flex;
align-items: center;
justify-content: space-around;
transform: rotateY(-90deg) translateZ(50px);
}
.back{
display: flex;
flex-direction: column;
justify-content: space-around;
transform: rotateY(180deg) translateZ(50px);
}
.right{
display: flex;
align-items: center;
justify-content: space-around;
flex-wrap: wrap;
transform: rotateY(90deg) translateZ(50px);
}
.top{
display: flex;
align-items: center;
justify-content: space-around;
flex-wrap: wrap;
transform: rotateX(90deg) translateZ(50px);
}
.bottom{
display: flex;
align-items: center;
justify-content: space-around;
flex-wrap: wrap;
transform: rotateX(-90deg) translateZ(50px);
}
.mid{
width:100%;
height:30%;
display:flex;
align-content: center;
justify-content: space-around;
}
.mid .point{
height:100%;
}