详解Vue.js动态绑定class


Posted in Javascript onDecember 20, 2016

Vue.js 的核心是一个响应的数据绑定系统,它允许我们在普通 HTML 模板中使用特殊的语法将 DOM “绑定”到底层数据。被绑定的DOM 将与数据保持同步,每当数据有改动,相应的DOM视图也会更新。基于这种特性,通过vue.js动态绑定class就变得非常简单。

1. 数据绑定

vue 指令以 v- 前缀标示,数据绑定的指令 v-bind:属性名, 简写为 :属性名, 简单的数据绑定例子如下:

<a v-bind:href="http://www.cnblogs.com/">博客园首页</a>
简写:
<a :href="http://www.cnblogs.com/">博客园首页</a>

2. 动态绑定class

vue 的分隔符默认是 {{ }}, 在分隔符里面的字符串会被认为是数据变量,可以通过 class="{{ className }}" 方式设置class,但是vue不推荐这种方式与 v-bind:class 的方式混用,二者只能选其一。v-bind:class 虽然与class属性里绑定变量的方式不能共存,却可以与原生的class特性共存, 一个DOM标签中允许同时出现原生class和v-bind:class。

2.1 v-bind:class 支持string类型,不建议这样使用,因为string值是固定不变的,无法实现动态改变class的需求

HTML代码:
<div :class=" 'classA classB' ">Demo1</div>
渲染后的HTML:
<div class="classA classB">Demo1</div>

2.2 v-bind:class 支持数据变量,当变量值改变时,将同时更新class。v-bind:class指令的值限定为绑定表达式,如javascript表达式

HTML代码:
<div :class="classA">Demo2</div>
Javascript代码:
data: {
 classA: 'class-a' //当classA改变时将更新class
}
渲染后的HTML:
<div class="class-a">Demo2</div>

写在指令中的值会被视作表达式,如javascript表达式,因此v-bind:class接受三目运算:

HTML代码:
<div :class="classA ? 'class-a' : 'class-b' ">Demo3</div>
渲染后的HTML:
<div class="class-a">Demo3</div>

2.3 v-bind:class 支持对象,对象改变时会动态更新class

HTML代码:
<div :class="{ 'class-a': isA, 'class-b': isB}">Demo4</div>
Javascript代码:
data: {
 isA: false, //当isA改变时,将更新class
 isB: true //当isB改变时,将更新class
}
渲染后的HTML:
<div class="class-b">Demo4</div>
HTML代码:
<div :class="objectClass">Demo5</div>
Javascript代码:
data: {
 objectClass: {
 class-a: true,
 class-b: false
 }
}
渲染后的HTML:
<div class="class-a">Demo5</div>

2.4: v-bind:class支持数组, 数组里的变量改变时,会动态更新class列表

HTML代码:
<div :class="[classA, classB]">Demo6</div>
Javascript代码:
data: {
 classA: 'class-a',
 classB: 'class-b'
}
渲染后的HTML:
<div class="class-a class-b">Demo6</div>

数组中可以包含object类型,数组中的object对象改变,也会更新class列表

HTML代码:
<div :class="[classA, classB]">Demo7</div>
Javascript代码:
data: {
 classA: 'class-a',
 objectClass: {
 classB: 'class-b', // classB 的值为class-b, 则将classB的值添加到class列表
 classC: false, // classC值为false,将不添加classC
 classD: true // classD 值为true,classC将被直接添加到class列表
}
}
渲染后的HTML:
<div class="class-a class-b classD">Demo7</div>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript String对象扩展HTML编码和解码的方法
Jun 02 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
Apr 16 Javascript
javascript 面向对象封装与继承
Nov 27 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
Aug 26 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 Javascript
JS求1到任意数之间的所有质数的方法详解
May 20 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 Javascript
原生js实现点击轮播切换图片
Feb 11 Javascript
浅谈Angular的$q, defer, promise
Dec 20 #Javascript
BootStrapTable服务器分页实例解析
Dec 20 #Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 #Javascript
bootstrap多种样式进度条展示
Dec 20 #Javascript
JS封装通过className获取元素的函数示例
Dec 20 #Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
Dec 20 #Javascript
jquery+html仿翻页相册功能
Dec 20 #Javascript
You might like
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
JavaScript 数组详解
2013/10/10 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
Python collections模块使用方法详解
2019/08/28 Python
详解python中的模块及包导入
2019/08/30 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
上海中网科技笔试题
2012/02/19 面试题
幼儿园教师教学反思
2014/02/06 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server