我使用的是vue3,css 鼠标悬浮时图片上下线性动,只要鼠标不移走,就一直上下动,在鼠标离开时线性回到初始位置
时间: 2024-09-27 08:05:57 浏览: 80
在 Vue.js 中,你可以通过 CSS 和 Vue 的 v-bind:key 或者 JavaScript 来实现这样的动画效果。首先,你需要设置一个 CSS 动画,比如将图片的 `transform` 属性用于垂直位移,当鼠标悬停时启动动画,鼠标离开时停止动画并恢复到初始位置。
下面是一个简单的示例:
```html
<template>
<div :style="{ transform: hoverTranslate }">
<img :src="imageUrl" @mouseenter="startHoverAnimation" @mouseleave="stopHoverAnimation">
</div>
</template>
<script>
export default {
data() {
return {
imageUrl: 'your-image-url',
hoverTranslate: '',
isAnimating: false,
};
},
methods: {
startHoverAnimation() {
this.isAnimating = true;
this.hoverTranslate = 'translateY(5px)';
},
stopHoverAnimation() {
if (this.isAnimating) {
this.hoverTranslate = 'translateY(0)';
this.isAnimating = false;
setTimeout(() => {
// 如果你想让动画更平滑,可以添加一个延迟清除动画的效果
this.hoverTranslate = '';
}, 200); // 例如这里设置了200ms的延迟
}
},
},
};
</script>
<style scoped>
@keyframes slide-up-and-down {
0% { transform: translateY(0); }
50% { transform: translateY(-5px); }
100% { transform: translateY(0); }
}
.your-class-name {
transition: transform 0.3s; /* 设置过渡时间 */
}
.your-class-name:hover {
animation: slide-up-and-down 0.5s infinite; /* 使用关键帧动画,无限循环 */
}
</style>
```
请将 `.your-class-name` 替换为你实际元素的 class 名,并确保在 CSS 中为这个类名设置了正确的样式。
阅读全文