3D漂浮动画是一种常见的网页特效,通过JavaScript和CSS3的3D变换属性来实现。以下是一个简单的3D漂浮动画的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3D Floating Animation</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="scene">
<div class="cube">
<div class="cube__face cube__face--front">Front</div>
<div class="cube__face cube__face--back">Back</div>
<div class="cube__face cube__face--right">Right</div>
<div class="cube__face cube__face--left">Left</div>
<div class="cube__face cube__face--top">Top</div>
<div class="cube__face cube__face--bottom">Bottom</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-color: #f0f0f0;
}
.scene {
width: 200px;
height: 200px;
perspective: 600px;
}
.cube {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
animation: rotate 5s infinite linear;
}
.cube__face {
position: absolute;
width: 200px;
height: 200px;
border: 2px solid black;
line-height: 200px;
text-align: center;
font-size: 24px;
color: white;
background: rgba(0, 0, 255, 0.7);
}
.cube__face--front { transform: translateZ(100px); }
.cube__face--back { transform: rotateY(180deg) translateZ(100px); }
.cube__face--right { transform: rotateY(90deg) translateZ(100px); }
.cube__face--left { transform: rotateY(-90deg) translateZ(100px); }
.cube__face--top { transform: rotateX(90deg) translateZ(100px); }
.cube__face--bottom { transform: rotateX(-90deg) translateZ(100px); }
@keyframes rotate {
from { transform: rotate3d(0, 0, 0, 0deg); }
to { transform: rotate3d(1, 1, 1, 360deg); }
}
// 这里可以添加一些交互逻辑,例如鼠标控制旋转等
document.addEventListener('mousemove', (event) => {
const scene = document.querySelector('.scene');
const x = event.clientX / window.innerWidth - 0.5;
const y = event.clientY / window.innerHeight - 0.5;
scene.style.transform = `rotateY(${x * 50}deg) rotateX(${y * 50}deg)`;
});
transform
属性,可以实现元素的3D旋转、缩放和平移。@keyframes
定义动画的关键帧,并使用animation
属性应用到元素上。requestAnimationFrame
代替setTimeout
或setInterval
。translate3d
)。通过以上代码和解释,你应该能够实现一个基本的3D漂浮动画,并理解其背后的原理和应用场景。
领取专属 10元无门槛券
手把手带您无忧上云