Vue实现鼠标悬停动画效果详解
作者:山岚时间:2026-10-23 12:01:12浏览:600
本文介绍了在Vue项目中实现鼠标经过(悬停)动画的具体代码方案。通过监听mouseenter和mouseleave事件控制状态变量,结合CSS类名切换实现平滑的位移与透明度变化效果。文中提供了完整的HTML模板、Script逻辑及CSS样式代码,帮助开发者快速掌握Vue结合CSS实现交互动画的方法。
Vue鼠标悬停动画实现
本文分享了一个使用Vue实现鼠标悬停动画的具体代码示例,供读者参考。

以下是详细的实现代码:
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<div class="box">
<div class="boxchilde" @mouseenter="flag=true" @mouseleave="flag=false">
<div :class="flag?'passing':''"></div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Your Vue.js App',
flag:false
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.box{
width: 100%;
height: 100%;
}
.boxchilde{
display: inline-block;
margin: 20px;
width: 200px;
height: 400px;
background-color: #ccc;
border-radius: 5px;
-webkit-transition: all 0.6s ease-in;
-moz-transition: all 0.6s ease-in;
-ms-transition: all 0.6s ease-in;
-o-transition: all 0.6s ease-in;
transition: all 0.6s ease-in;
overflow: hidden;
}
.boxchilde:hover{
cursor: pointer;
-webkit-transform: translate(0,-10px);
-moz-transform: translate(0,-10px);
-ms-transform: translate(0,-10px);
-o-transform: translate(0,-10px);
transform: translate(0,-10px);
}
.passing {
width: 100%;
height: 10px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background-color: red;
animation: passing_4500 0.8s ease-in-out 0s 1 alternate forwards;
transform-origin: 50% 50%;
}
@keyframes passing_4500 {
0% { transform:translateX(-100%); opacity:0 }
33.33333% { transform:translateX(-100%); opacity:0 }
66.66667% { transform:translateX(0%); opacity:1 }
100% { transform:translateX(0%); opacity:1 }
}
</style>
如需了解更多关于Vue的精彩内容,请点击下方专题链接查看:
Vue.js组件学习教程
Vue.js实战教程
Vue.js前端组件学习教程
以上就是本文的全部内容,希望这些内容能对各位的学习有所帮助,同时也欢迎大家继续支持本站。
作者最新文章
Vue.js官网地址是多少?区分国际站与中文文档入口
2026-11-05 16:29:53
Vue/React 项目中怎么封装复用 flv.js 播放器组件
2026-11-03 19:42:36
Vue.js 动态路由权限控制与菜单生成实战方案
2026-11-03 13:46:47
Vue.js 企业级项目架构搭建与目录规范实战
2026-11-03 12:25:32
Vue 或 React 项目中集成 Swiper.js 的最佳实践
2026-11-02 10:29:42
