详解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实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
vue实现全选和反选功能
Aug 31 Javascript
详解webpack-dev-server的简单使用
Apr 02 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
利用Blob进行文件上传的完整步骤
Aug 02 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
react+antd 递归实现树状目录操作
Nov 02 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 Javascript
react antd实现动态增减表单
Jun 03 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
15种PHP Encoder的比较
2007/03/06 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
javascript 写类方式之八
2009/07/05 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
python实现简单遗传算法
2020/09/18 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
大学生求职中的自我评价
2013/10/01 职场文书
总经理岗位职责范本
2014/02/02 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
创先争优一句话承诺
2014/05/29 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers