详解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实现在小方框中浏览大图的代码
Aug 14 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
May 16 Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 Javascript
vue实现简单跑马灯效果
May 25 Javascript
vue+node 实现视频在线播放的实例代码
Oct 19 Javascript
详解阿里Node.js技术文档之process模块学习指南
Jan 04 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 chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php生成QRcode实例
2014/09/22 PHP
DIV菜单层实现代码
2010/11/19 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
python类定义的讲解
2013/11/01 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
tensorflow识别自己手写数字
2018/03/14 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
python实现超市商品销售管理系统
2019/10/25 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
带病坚持工作事迹
2014/05/03 职场文书
项目建议书模板
2014/05/12 职场文书
公务员培的训心得体会
2014/09/01 职场文书
2014年保管员工作总结
2014/11/18 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书