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 学习笔记(十五)
Jan 28 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
Jul 13 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
Jan 05 Javascript
js实现div拖动动画运行轨迹效果代码分享
Aug 27 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
jQuery 更改checkbox的状态,无效的解决方法
Jul 22 Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 Javascript
详解在 Angular 项目中添加 clean-blog 模板
Jul 04 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
Webpack的dll功能使用
Jun 28 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
node.js实现端口转发
2016/04/14 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
js实现小星星游戏
2020/03/23 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
Python and、or以及and-or语法总结
2015/04/14 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
python实现中文转换url编码的方法
2016/06/14 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
高校自主招生自荐信
2013/12/09 职场文书
大学三年的自我评价
2013/12/25 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
开学第一天的感想
2015/08/10 职场文书
python 安全地删除列表元素的方法
2022/03/16 Python