详解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 相关文章推荐
JS判断对象是否存在的10种方法总结
Dec 23 Javascript
javascript中使用正则计算中文长度的例子
Apr 29 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
触屏中的JavaScript事件分析
Feb 06 Javascript
纯javascript移动优先的幻灯片效果
Nov 02 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
JS实现带阴历的日历功能详解
Jan 24 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
Sep 11 Javascript
javascript canvas检测小球碰撞
Apr 17 Javascript
js实现前端界面导航栏下拉列表
Aug 27 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
浅谈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实现ping
2006/10/09 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
详解Python中dict与set的使用
2015/08/10 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python名片管理系统开发
2020/06/18 Python
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
2014年五一促销活动方案
2014/03/09 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
孟佩杰观后感
2015/06/17 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python