html实现一个3D相册,给出代码
时间: 2024-03-02 08:50:56 浏览: 10
好的,下面是一个简单的HTML+CSS代码实现3D相册的示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>3D相册</title>
<style type="text/css">
.container {
position: relative;
perspective: 800px;
width: 100%;
height: 500px;
}
.wrapper {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotateY(0deg);
transform-style: preserve-3d;
width: 80%;
height: 80%;
transition: transform 1s;
}
.photo {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
box-shadow: 0px 0px 20px rgba(0,0,0,0.5);
border-radius: 10px;
}
.photo img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.photo:nth-child(1) {
transform: rotateY(0deg) translateZ(300px);
}
.photo:nth-child(2) {
transform: rotateY(60deg) translateZ(300px);
}
.photo:nth-child(3) {
transform: rotateY(120deg) translateZ(300px);
}
.photo:nth-child(4) {
transform: rotateY(180deg) translateZ(300px);
}
.photo:nth-child(5) {
transform: rotateY(240deg) translateZ(300px);
}
.photo:nth-child(6) {
transform: rotateY(300deg) translateZ(300px);
}
.prev,
.next {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 50px;
height: 50px;
background-color: rgba(255,255,255,0.8);
border-radius: 50%;
box-shadow: 0px 0px 10px rgba(0,0,0,0.5);
text-align: center;
line-height: 50px;
cursor: pointer;
}
.prev {
left: 20px;
}
.next {
right: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="wrapper">
<div class="photo">
<img src="photo1.jpg">
</div>
<div class="photo">
<img src="photo2.jpg">
</div>
<div class="photo">
<img src="photo3.jpg">
</div>
<div class="photo">
<img src="photo4.jpg">
</div>
<div class="photo">
<img src="photo5.jpg">
</div>
<div class="photo">
<img src="photo6.jpg">
</div>
</div>
<div class="prev">‹</div>
<div class="next">›</div>
</div>
<script type="text/javascript">
let wrapper = document.querySelector('.wrapper');
let prev = document.querySelector('.prev');
let next = document.querySelector('.next');
let angle = 0;
prev.addEventListener('click', function() {
angle += 60;
wrapper.style.transform = `translate(-50%, -50%) rotateY(${angle}deg)`;
});
next.addEventListener('click', function() {
angle -= 60;
wrapper.style.transform = `translate(-50%, -50%) rotateY(${angle}deg)`;
});
</script>
</body>
</html>
```
这个示例中,我们使用了`perspective`和`transform-style: preserve-3d`属性来实现3D效果,使用`transform`属性控制旋转和平移。通过JavaScript代码,我们可以实现点击“前一张”或“后一张”按钮时相册的旋转。