详解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 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
javascript实现的简单的表单验证
Jul 10 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
jQuery实现checkbox的简单操作
Nov 18 jQuery
JavaScript中EventLoop介绍
Jan 22 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
Jul 10 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
详解如何在vue项目中使用layui框架及采坑
May 05 Javascript
小程序双头slider选择器的实现示例
Mar 31 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 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 无线电
cmd下运行php脚本
2008/11/25 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
Python采用Django制作简易的知乎日报API
2016/08/03 Python
详解python中*号的用法
2019/10/21 Python
python 实现任务管理清单案例
2020/04/25 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
给国外客户的邀请函
2014/01/30 职场文书
森林防火工作方案
2014/02/14 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
党员评议自我评价
2015/03/03 职场文书
升职自荐信怎么写
2015/03/05 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
Java实现多线程聊天室
2021/06/26 Java/Android
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python