利用Vue的v-for和v-bind实现列表颜色切换


Posted in Javascript onJuly 17, 2020

需求:

在页面上显示四个列表,初始时字体为黑色。

鼠标点击某一个列表时,该列表的颜色变为红色,其余列表仍为黑色。

代码实现:

<!-- css -->
<style>
 .red{
 color: red;
 }
</style>

<!-- html -->
<div id="app">
 <ul>
 <li v-for="item,index in movies" :class="{red: changeRed == index}" v-on:click="change(index)">{{item}}</li>
 </ul>
</div>

<!-- JavaScript -->
<script src="../JS/vue.js"></script>
<script>
 const app = new Vue({
 el: '#app',
 data: {
 movies: ['肖申克的救赎','泰坦尼克号','当幸福来敲门','流浪地球'],
 changeRed: -1
 },
 methods: {
 change:function (index) {
 this.changeRed=index;
 }
 }
 })
</script>

代码解释:

首先浏览器直接显示列表,因为此时没有监听到click事件。

当鼠标点击某一个列表时,Vue自动获取列表下标,并执行change(index)函数,改变changeRed的值,此时当前列表的v-bind:class="{red: changeRed == index}"中的red为true,当前一项列表显示为红色。其余列表的changeRed == index为false,所以不显示红色。

补充知识:vue学习(绑定class、v-bind:style(对象语法、数组语法))

vue 属性绑定

css

.class0{
 color: red;
 font-size: 10px;
 }

 .class00{
 color: blue;
 font-size: 70px;
 }

 .class2{
 color: yellow;
 font-size: 30px;
 }

 .class3{
 color: indianred;

 }

 .class4{
 font-size: 30px;
 }

1 class绑定

1.1 字符串绑定

<div id="app1">
 可以绑定一个默认class 字符串绑定class
 <p class="class0" :class="a"> xxxx是字符串 </p>

 <button @click="updates1"> 点击</button>
</div>
// 1.1 字符串绑定
 var a = new Vue({
 el:'#app1',
 data: {
  //绑定默认css属性
  a: "class1",
  b:"class0",

 },
  //动态切换css属性
  methods: {
  updates1 (){
   this.a = 'class2'

  }
  }
 });

1.2 对象绑定 和 数组绑定

<div id="app2">
 对象绑定class
 <p :class="{class2:isA,class00:isB}"> xxxx是对象 例如 :class="{class2:isA,class00:isB}"</p>

 <button @click="updates2"> 点击</button> <br>

 数组绑定class <br>
 <p :class="['class3','class4']"> xxxx是数组 例如 :class="[class3,class4]" </p>

</div>
//1.2 对象绑定
 var a = new Vue({
 el:'#app2',


 data: {
  //绑定默认css属性
  isA: true,
  isB: false,
 },
 //动态切换css属性
 methods: {
  updates2 (){
  this.isA = false;
  this.isB = true;
  }
 }


 });

图示

利用Vue的v-for和v-bind实现列表颜色切换

点击后

利用Vue的v-for和v-bind实现列表颜色切换

2 style 绑定

<div id="app3">
 <div :style="{ color: activeColor, fontSize: fontSize + 'px' }">Style 绑定1 例如 :style="{ color: activeColor, fontSize: fontSize + 'px' }"</div>
 <div :style="objectCssStyle">Style 绑定2(绑定到一个样式对象通常更好) 例如 :style="objectCssStyle"</div>
 <div :style="[clSty1, clSty2]">Style 绑定3(数组语法) 例如 :style="[activeColor, fontSize]"</div>

 <button @click="updates4"> 点击</button>
</div>
// 2 style 绑定
 var a = new Vue({
 el:'#app3',
 data: {
  //绑定默认css属性
  activeColor: 'red',
  fontSize: 100,
  objectCssStyle:{
  color: 'red',
  fontSize: '10px'
  },
  objectCssStyle2:{
  color: 'yellow'
  },

  clSty1: {
  color: 'green',
  fontSize: '30px'
  },
  clSty2: {
  'font-weight': 'bold'
  }


 },
 //动态切换css属性
 methods: {
  updates4 (){
  this.activeColor = "blue";
  this.fontSize = 20;
  this.objectCssStyle = this.objectCssStyle2

  }
 }

 });

图示

利用Vue的v-for和v-bind实现列表颜色切换

点击后

利用Vue的v-for和v-bind实现列表颜色切换

以上这篇利用Vue的v-for和v-bind实现列表颜色切换就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 页面载入进度条实现代码
Feb 08 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
Oct 30 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
Position属性之relative用法
Dec 14 Javascript
JQuery ZTree使用方法详解
Jan 07 Javascript
js实现1,2,3,5数字按照概率生成
Sep 12 Javascript
原生JS实现的雪花飘落动画效果
May 03 Javascript
angular 服务随记小结
May 06 Javascript
微信公众号平台接口开发 获取access_token过程解析
Aug 14 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
创建与框架无关的JavaScript插件
Dec 01 Javascript
基于js实现判断浏览器类型代码实例
Jul 17 #Javascript
Vue实现背景更换颜色操作
Jul 17 #Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 #Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 #Javascript
vue点击标签切换选中及互相排斥操作
Jul 17 #Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 #Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 #Javascript
You might like
PHP 99乘法表的几种实现代码
2020/10/13 PHP
一些常用的Javascript函数
2006/12/22 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
Django时区详解
2019/07/24 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
董事长职责范文
2013/11/08 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
施工工地安全标语
2014/06/07 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
母亲节感言
2015/08/03 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
室外天线与收音机天线杆接合方法
2022/04/05 无线电