详解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 相关文章推荐
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
javascript修改表格背景色实例代码分享
Dec 10 Javascript
jQuery寻找n以内完全数的方法
Jun 24 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
vue.js中$watch的用法示例
Oct 04 Javascript
Angular的事件和表单详解
Dec 26 Javascript
JQuery中Ajax的操作完整例子
Mar 07 Javascript
React Native实现进度条弹框的示例代码
Jul 17 Javascript
基于node.js实现微信支付退款功能
Dec 19 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 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
如何选购合适的收音机
2021/03/01 无线电
php 验证码制作(网树注释思想)
2009/07/20 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
vuejs如何配置less
2017/04/25 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
Python正则表达式匹配ip地址实例
2014/10/09 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python的UTC时间转换讲解
2019/02/26 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
django的csrf实现过程详解
2019/07/26 Python
Python的互斥锁与信号量详解
2019/09/12 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
python字典的元素访问实例详解
2021/07/21 Python
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
JavaScript数组 几个常用方法总结
2021/11/11 Javascript