详解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模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
在for循环中length值是否需要缓存
Jul 27 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
实现单层json按照key字母顺序排序的示例
Dec 06 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
JS开发自己的类库实例分析
Aug 28 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 Javascript
three.js 制作动态二维码的示例代码
Jul 31 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Python分支结构(switch)操作简介
2018/01/17 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
python处理“
2019/06/10 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
python颜色随机生成器的实例代码
2020/01/10 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
如何理解委托
2012/01/06 面试题
客服工作职责
2013/12/11 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技