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 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
jquery实现excel导出的方法
Apr 04 Javascript
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
Oct 25 Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 Javascript
JavaScript中点击事件的写法
Jun 28 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
vue使用中的内存泄漏【推荐】
Jul 10 Javascript
VeeValidate 的使用场景以及配置详解
Jan 11 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
Mar 11 Javascript
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&amp;mysql(一)
2006/10/09 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
javascript事件模型代码
2007/07/01 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
Python的re模块正则表达式操作
2016/05/25 Python
python 批量修改/替换数据的实例
2018/07/25 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
python3中数组逆序输出方法
2020/12/01 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
工伤赔偿协议书
2014/04/15 职场文书
工程部文员岗位职责
2015/02/04 职场文书