vue 中动态绑定class 和 style的方法代码详解


Posted in Javascript onJune 01, 2018

先列举一些例子

class="['content',{'radioModel':checkType}]"  
class="['siteAppListDirNode',{open:appitem.open==true}]" 
class="['portalCenterMenu',{showNav:!showHideNav,hideNav:showHideNav}]" 
class="{shortcutMenuShow:!showHideNav,shortcutMenuHide:showHideNav}" 
style="{height:checkType?'423px':'385px'}" 
src="userInfo.userFace?userInfo.userFace:defaultHead"

再来看详细解释

Vue.js 的核心是一个响应的数据绑定系统,它允许我们在普通 HTML 模板中使用特殊的语法将 DOM “绑定”到底层数据。被绑定的DOM 将与数据保持同步,每当数据有改动,相应的DOM视图也会更新。基于这种特性,通过vue.js动态绑定class就变得非常简单。

1. 数据绑定

vue 指令以 v- 前缀标示,数据绑定的指令 v-bind:属性名, 简写为 :属性名, 简单的数据绑定例子如下:

<a v-bind:href="https://3water.com/">三水点靠木首页</a>

简写:

<a :href="https://3water.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>

总结:触类旁通,基本上都一样。

以上所述是小编给大家介绍的vue 中动态绑定class 和 style的方法代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
静态页面的值传递(三部曲)
Sep 25 Javascript
javascript中call apply 的应用场景
Apr 16 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
JavaScript模仿Pinterest实现图片预加载功能
Oct 25 Javascript
jQuery中DOM节点删除之empty与remove
Jan 20 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
Feb 06 Javascript
详解webpack babel的配置
Jan 09 Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
electron 安装,调试,打包的具体使用
Nov 06 Javascript
vue 组件间的通信之子组件向父组件传值的方式
Jul 29 Javascript
一个简单的node.js界面实现方法
Jun 01 #Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 #Javascript
Vue中的混入的使用(vue mixins)
Jun 01 #Javascript
JavaScript实现的简单加密解密操作示例
Jun 01 #Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 #Javascript
Express之托管静态文件的方法
Jun 01 #Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 #Javascript
You might like
zf框架的校验器InArray使用示例
2014/03/13 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
javascript数组排序汇总
2015/07/07 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python最长公共子串算法实例
2015/03/07 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
python3 反射的四种基本方法解析
2019/08/26 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
文员个人求职自荐信
2013/09/21 职场文书
会议室标语
2014/06/21 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
2015年财政所工作总结
2015/04/25 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript