<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
@property --l {
syntax: '<length>';
initial-value: 0px;
inherits: true;
}
.cube {
margin-top: 100px;
margin-left: 100px;
position: relative;
width: 200px;
height: 200px;
transform-style: preserve-3d;
animation: spin 10s infinite linear paused;
animation-delay: -0s;
--l: 100px;
}
.face {
position: absolute;
width: 200px;
height: 200px;
border-radius: 30px;
text-align: center;
line-height: 200px;
}
.front {
background-color: rgba(255, 0, 0, 0.71);
transform: translateZ(var(--l));
}
.back {
background-color: rgba(0, 0, 255, 0.81);
transform: translateZ(calc(var(--l) * -1)) rotateY(180deg);
}
.right {
background-color: rgba(0, 128, 0, 0.71);
transform: rotateY(90deg) translateZ(calc(var(--l) * 1));
}
.left {
background-color: rgba(255, 255, 0, 0.78);
transform: rotateY(-90deg) translateZ(calc(var(--l) * 1));
}
.top {
background-color: rgba(255, 165, 0, 0.76);
transform: rotateX(90deg) translateZ(calc(var(--l) * 1));
}
.bottom {
background-color: rgba(128, 0, 128, 0.7);
transform: rotateX(-90deg) translateZ(calc(var(--l) * 1));
}
@keyframes spin {
50% {
--l: 150px;
transform: rotate3d(1, 1, 1, 180deg);
}
to {
--l: 100px;
transform: rotate3d(1, 1, 1, 360deg);
}
}
</style>
</head>
<body>
<div class="cube">
<div class="face front">前</div>
<div class="face back">后</div>
<div class="face right">右</div>
<div class="face left">左</div>
<div class="face top">上</div>
<div class="face bottom">下</div>
</div>
<script>
function onRangeChange(value) {
let val = `-${value}s`
console.log(val)
document.querySelector('.cube').style.setProperty('animation-delay', val)
}
onRangeChange(5)
</script>
<div style="height: 100px"></div>
<input type="range" oninput="onRangeChange(this.value)" min="0" max="10" step="0.1">
</body>
</html>
网友评论