vue实现鼠标移过出现下拉二级菜单功能


Posted in Javascript onDecember 12, 2019

1.我曾经听一位快十年前端大佬说过一句话,就是能用css实现的动画,就用css不要用js去实现 因为在渲染上css肯定比js效果更好 

我用jquery曾经实现过鼠标点击 出现下拉菜单 有点和面包屑 和标签页导航类似  后来参加工作了 公司一直在用vue 所以很多用jqeury写的项目都要用vue来重构 这其中不免碰见了有一些动画效果 虽然很简单 

我也曾想着就用jquery去实现吧 代码多一点无所谓了 但最后却不是这样 vue好像和jquery中的有些插件冲突了  只要vue已导入 那些用jquery实现的动画 就不能用 但又不能不用vue 没办法 这些效果只能用vue来实现了

vue官方提供了一种动画效果 是 transition  下面是vue官方的经典例子

vue监听的元素 一旦从dom树 发生类似 删除 重新创建  =》 removeElement  createElement   display:block;  display:none;

对应 vue中的 v-if   和 v-show  就可以算是触发一种动画效果  从用户角度来说都是 上面俩种情况都是从无到有的出现在界面上 

.fade-enter-active, .fade-leave-active {   //定义元素 进入页面时和离开页面时的 效果
     transition: opacity .5s;    // 设置透明度默认是1 1是不透明 0是全透明 全透明相当于消失在页面上 transition css3的过度效果
    }
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
     opacity: 0;    //设置元素进入 前和离开后都是纯透明状态 
 }
// 设置一个按钮 通过v-show 控制元素的显示隐藏

<div id="demo">
     <button v-on:click="show = !show">
      Toggle
     </button>

    <transition name="fade">   // <transition name="fade"></transition> 这个是必须的  
        <p v-if="show">hello</p>  //这里的name 和css样式中的那个 fade也是一致的 让p元素display block和node之间切换
     </transition>
 </div>

var app1=new Vue({
    el:'#app',//或者'#app'
    data:{
      show:false   //vue实例 定义一个变量
    }
  })

上面的这个例子算是 vue中经典的例子了 如果你不想写 样式的话 你可以结合第三方插件库  也可以快速实现vue中的动画效果

我这里用的是 animate.css动画库

<link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css">  //cdn

<div>
     <button @click="show = !show">
      点击
     </button>
     <transition
      name="custom-classes-transition"                    //使用 animate.css 虽然只是写个类名 但前面不要忘记写
      enter-active-class="animated slideInDown"           //animated 再写 你要运用的动画名称
      leave-active-class="animated slideInUp"
     >
      <p v-if="show">hello</p>
     </transition>
    </div>

vue实例和上面的一模一样就不写了   下面 我附上 animate.css的地址

https://daneden.github.io/animate.css/

3.其实吧 在工作中 你可能就实现一个小动画 好像没必要引进那么大的animate插件库  我在工作中就用的方法1  除非你的项目要大量用到动画 并且需要不同的表现效果 那还是推荐使用插件库  

下面 我说我的实际工作怎么解决的

我要实现一个鼠标移过出现下拉菜单 

.fade-enter-active, .fade-leave-active {   
     transition: opacity .5s;   
    }
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
     opacity: 0;    
 }

// 这里是鼠标移动过给show 赋值每一个遍历li的下标   离开赋值给-1 

// 童鞋们知道为啥赋值成-1吗 因为之前我赋值给false 发现下标是0的时候跟false是相等的  这个算是疏忽了 

//这样就实现了 鼠标移动过 不同的li会出现当前li下的的下拉菜单   动画 经理也没说非要拿吗高级 所以没有在写出什么复杂的动画说实话 本人实力暂时也不是很强  哈哈     这里的i和show 都是变量 所以可以直接在@mouseover事件中使用  很多童鞋可能忘记了这种用法 只知道  事件后面一定要绑定方法 其实给变量赋值 也是可以的

<li class="nLi" v-for="(v,i) of itemList" @mouseover="show=i" @mouseout="show=-1">

                  <h3><a href="">企业文化</a>|</h3>

                  <transition name="fade">

                    <div class="sub" v-show="show==i">

                        <ul>

                          <li><a href="">公司理念</a></li> 

                          <li><a href="">发展战略</a></li>

                         <li><a href="">发展历程</a></li>

                     </ul>

               </div>

        </transition>

  </li> 

var app1=new Vue({
    el:'#app',//或者'#app'
    data:{
      show:-1   //vue实例 定义一个变量
    }
  })

好了 这个算是今天的一个小收获  到此结束 我会持续更新把碰见的问题 共享出来 让很多童鞋少走弯路  本人一直在向大牛的路上努力前进着

总结

以上所述是小编给大家介绍的vue实现鼠标移过出现下拉二级菜单,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
用JavaScript事件串连执行多个处理过程的方法
Mar 09 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
TypeScript具有的几个不同特质
Apr 07 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 Javascript
七夕情人节丘比特射箭小游戏
Aug 20 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
Nov 03 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
javaScript+turn.js实现图书翻页效果实例代码
Feb 16 Javascript
通俗解释JavaScript正则表达式快速记忆
Aug 23 Javascript
微信小程序实现Swiper轮播图效果
Nov 22 Javascript
微信小程序背景音乐开发详解
Dec 12 #Javascript
vue实现商城秒杀倒计时功能
Dec 12 #Javascript
深入理解 TypeScript Reflect Metadata
Dec 12 #Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 #Javascript
vue-property-decorator用法详解
Dec 12 #Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 #Javascript
JavaScript Reflect Metadata实现详解
Dec 12 #Javascript
You might like
深入PHP数据缓存的使用说明
2013/05/10 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
详解python中的lambda与sorted函数
2020/09/04 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
.net工程师笔试题
2012/06/09 面试题
会计专业个人求职信范文
2014/01/08 职场文书
交通安全教育制度
2014/02/02 职场文书
党员承诺书格式
2014/05/21 职场文书
社区两委对照检查材料
2014/08/23 职场文书
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技