vue使用v-for实现hover点击效果


Posted in Javascript onSeptember 29, 2018

使用Vue来实现鼠标悬停效果。可以使用事件处理器v-on指令(简写为:@)来完成。为标签绑定mouseenter以及mouseleave事件即可。

hover是css中的选择器,用于选择鼠标指针浮动在上面的元素。所以a:hover可用于设置当鼠标悬停在超链接之上时超链接的样式。

在当今比较流行的前端框架里 vue react 都是以数据驱动的形式来修改元素的状态, 而并非是之前使用jq来操作dom元素, 这样效率也是非常低的, 像vue, react 都是以虚拟dom的形式渲染页面, 以数据的变化来更新虚拟dom, 从而更新页面.

vue使用v-for实现hover点击效果

jquery 来实现

1.给li来绑定hover事件

@mouseover="hover(index)"

2.在hover函数内去操作dom eq选中当前hover的li去修改它的样式, siblings()选中其他的li修改样式

hover: function(index){
  console.log(index);
  $('ul li').eq(index).css({
    'background': '#ccc',
    'color': '#fff'
  }).siblings().css({
    'background': '#fff',
    'color': '#333'
  })
}

vue 利用不同的class名来实现

首先写两个不同状态的样式

.hoverBg{
  background: #ccc;
  color: #fff;
}
.clickBg{
  background: red;
  color: #fff;
}

然后给两个状态绑定两个值

export default {
  data: function(){
    return {
      itemArr:['A','B','C','D'],
      hoverIndex: -1, //表示当前hover的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
      clickIndex: -1, //表示当前点击的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
    }
  },
}

hover的时候让hoverIndex等于hover的li,点击时候一样

@mouseover="hoverIndex = index"
@click="clickIndex = index"

鼠标移出又取消移出状态 即让hover的li为 -1 或 null

@mouseout="hoverIndex = -1"

然后利用 hoverIndex 和 clickIndex 来给li不同的class名 实现效果

:class="{'clickBg':index==clickIndex,'hoverBg':index==hoverIndex}"

用的熟练了就可以做出更多的东西,不同li渲染不同的样式

全部代码如下:

<template>
  <ul class="item">
    <li v-for="(item, index) in itemArr" :key="index"
      :class="{'clickBg':index==clickIndex,'hoverBg':index==hoverIndex}"
      @click="clickIndex = index"
      @mouseover="hoverIndex = index"
      @mouseout="hoverIndex = -1">
      {{item}}
    </li>
  </ul>
</template>

<script>
 export default {
   data: function(){
     return {
       itemArr:['A','B','C','D'],
       hoverIndex: -1, //表示当前hover的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
       clickIndex: -1, //表示当前点击的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
     }
   },
 }
</script>

<style>
 .item{
   width: 600px;
   height: 60px;
 }
 .item li{
   width: 80px;
   height: 60px;
   line-height: 60px;
   margin-left: 20px;
   float: left;
   text-align: center;
   cursor: pointer;
 }
 .hoverBg{
   background: #ccc;
   color: #fff;
 }
 .clickBg{
   background: red;
   color: #fff;
 }
</style>

总结

以上所述是小编给大家介绍的vue使用v-for实现hover点击效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中强制执行toString()具体实现
Apr 27 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
jquery 3D 标签云示例代码
Jun 12 Javascript
scrollWidth,clientWidth,offsetWidth的区别
Jan 13 Javascript
JQuery中两个ul标签的li互相移动实现方法
May 18 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
Oct 16 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
Mar 14 Javascript
node.js博客项目开发手记
Mar 16 Javascript
vue router 跳转后回到顶部的实例
Aug 31 Javascript
JavaScript遍历数组和对象的元素简单操作示例
Jul 09 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
vue 实现上传组件
May 31 Vue.js
vue 利用路由守卫判断是否登录的方法
Sep 29 #Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
Sep 29 #Javascript
在vue中v-bind使用三目运算符绑定class的实例
Sep 29 #Javascript
iview同时验证多个表单问题总结
Sep 29 #Javascript
浅谈关于iview表单验证的问题
Sep 29 #Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 #Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 #Javascript
You might like
谈谈关于php的优点与缺点
2013/04/11 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP递归的三种常用方式
2019/02/28 PHP
js中判断控件是否存在
2010/08/25 Javascript
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
Python使用OpenCV进行标定
2018/05/08 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
网络技术支持面试题
2013/04/22 面试题
一些网络技术方面的面试题
2014/05/01 面试题
办公室内勤工作职责
2013/12/11 职场文书
求职面试个人自我评价
2014/02/28 职场文书
岗位说明书怎么写
2014/07/30 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
安全生产月标语
2014/10/07 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
浅谈python中的多态
2021/06/15 Python