详解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 命名空间以提高代码重用性
Nov 13 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
js中如何完美的解析数据
Mar 18 Javascript
原生js实现公告滚动效果
Jan 10 Javascript
一文快速详解前端框架 Vue 最强大的功能
May 21 Javascript
Vue的编码技巧与规范使用详解
Aug 28 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 Javascript
vue中defineProperty和Proxy的区别详解
Nov 30 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
学习javascript文件加载优化
2016/02/19 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
微信小程序如何获取用户手机号
2018/01/26 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
浅谈Python中函数的参数传递
2016/06/21 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
python怎么自定义捕获错误
2020/06/29 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
一个C/C++编程面试题
2013/11/10 面试题
公司企业表扬信
2014/01/11 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
大气污染防治方案
2014/05/19 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers