vue 圆上圆点通过点击让圆圈转起来
时间: 2024-09-20 16:13:29 浏览: 66
在Vue.js中创建一个圆形,并添加动态的圆点,当用户点击圆点时使整个圆形旋转,你可以使用`vue-cli`创建一个项目并结合CSS和JavaScript(主要是使用`@click`事件监听器)来实现这个效果。这里是一个简单的步骤说明:
1. 首先,安装Vue并设置基本结构:
```bash
vue create my-vue-project
cd my-vue-project
```
2. 在`src/App.vue`中,引入Vue的动画库`v-enter-active`(如果还没有安装,需要安装`vue-class-component`和`vue-animate`):
```html
<script src="https://unpkg.com/vue-class-component"></script>
<script src="https://unpkg.com/vue-animate/dist/vue-animate.min.js"></script>
```
3. 然后,在组件里创建一个圆形元素,并添加一个点击触发旋转的按钮:
```html
<template>
<div class="circle">
<button v-if="isClicked" @click="stopRotation">停止</button>
<svg :class="{ rotating: isRotating }" width="100" height="100">
<circle cx="50%" cy="50%" r="40" fill="transparent" stroke="#000" stroke-width="6" />
<circle cx="50%" cy="50%" r="2" fill="red" />
</svg>
</div>
</template>
<script>
import { Vue, Component, watch } from 'vue-property-decorator';
@Component
export default class App extends Vue {
isClicked = false;
isRotating = true;
startRotation() {
this.isRotating = true;
}
stopRotation() {
this.isRotating = false;
}
// 触发点击后的旋转动画
handleCircleClick(e) {
if (e.target.tagName === 'BUTTON') {
this.isClicked = !this.isClicked;
}
}
mounted() {
this.startRotation();
// 添加点击事件监听器
document.querySelector('svg').addEventListener('click', this.handleCircleClick);
}
beforeDestroy() {
// 移除点击事件监听器,防止内存泄漏
document.querySelector('svg').removeEventListener('click', this.handleCircleClick);
}
}
</script>
```
4. 定义CSS样式,包括旋转动画:
```css
.circle {
display: flex;
justify-content: center;
align-items: center;
}
.rotating circle {
animation: rotate 2s linear infinite;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
```
现在当你运行项目,点击红色圆点会启动旋转动画,再次点击会停止旋转。注意,此示例在浏览器环境中运行,如需在服务器端渲染,可能需要额外处理。
阅读全文