用vue 写一个 可自由随即旋转的立方体图片盒子 点击图片可以放大图片 背景是烟花特效
时间: 2023-09-10 08:12:52 浏览: 179
好的,这是一个比较有趣的页面,我可以给你提供一个基础的 Vue 组件代码,你可以根据你的需求进行修改和完善。
```html
<template>
<div class="fireworks-page">
<div class="cube-img-box" :style="{transform: 'rotateX(' + rotationX + 'deg) rotateY(' + rotationY + 'deg)'}" @click="zoomIn">
<div class="cube-img-front"></div>
<div class="cube-img-back"></div>
<div class="cube-img-left"></div>
<div class="cube-img-right"></div>
<div class="cube-img-top"></div>
<div class="cube-img-bottom"></div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
rotationX: 0, // 初始化 X 轴旋转角度
rotationY: 0, // 初始化 Y 轴旋转角度
isZoomedIn: false // 控制是否放大图片
}
},
mounted() {
// 自由随机旋转
setInterval(() => {
this.rotationX = Math.floor(Math.random() * 360);
this.rotationY = Math.floor(Math.random() * 360);
}, 1000);
},
methods: {
zoomIn() {
this.isZoomedIn = true;
}
}
}
</script>
<style>
.fireworks-page {
background: url('fireworks.jpg') no-repeat center center fixed;
background-size: cover;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.cube-img-box {
width: 200px;
height: 200px;
perspective: 1000px;
cursor: pointer;
transition: all 0.3s ease-in-out;
}
.cube-img-box:hover {
transform: scale(1.1);
}
.cube-img-front,
.cube-img-back,
.cube-img-left,
.cube-img-right,
.cube-img-top,
.cube-img-bottom {
width: 200px;
height: 200px;
position: absolute;
background-size: cover;
background-position: center;
border: 1px solid white;
}
.cube-img-front {
transform: translateZ(100px);
background-image: url('image1.jpg');
}
.cube-img-back {
transform: translateZ(-100px) rotateY(180deg);
background-image: url('image2.jpg');
}
.cube-img-left {
transform: translateX(-100px) rotateY(-90deg);
background-image: url('image3.jpg');
}
.cube-img-right {
transform: translateX(100px) rotateY(90deg);
background-image: url('image4.jpg');
}
.cube-img-top {
transform: translateY(-100px) rotateX(90deg);
background-image: url('image5.jpg');
}
.cube-img-bottom {
transform: translateY(100px) rotateX(-90deg);
background-image: url('image6.jpg');
}
.cube-img-box.zoomed-in {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
z-index: 999;
width: 80%;
height: 80%;
border-radius: 0;
}
</style>
```
上面的代码实现了一个带有自由随机旋转和点击放大的立方体图片盒子,这个盒子有6个面,每个面都是一张图片,当鼠标悬停在盒子上时,盒子会放大,当点击盒子时,盒子会变为全屏显示,并且没有圆角,这是一个很基础的 Vue 组件,你可以根据你的需求进行修改和完善。
阅读全文