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 相关文章推荐
this[] 指的是什么内容 讨论
Mar 24 Javascript
利用进制转换压缩数字函数分享
Jan 02 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
Feb 04 Javascript
jQuery中bind()方法用法实例
Jan 19 Javascript
关于JS中prototype的理解
Sep 07 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
JavaScript中闭包之浅析解读(必看篇)
Aug 25 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
Angular2表单自定义验证器的实现
Oct 19 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
Python中的迭代器漫谈
2015/02/03 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
体育教师自荐信范文
2013/12/16 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
就业意向协议书
2015/01/29 职场文书
如何书写授权委托书?
2019/06/25 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
超详细Python解释器新手安装教程
2021/05/10 Python
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
nginx请求限制配置方法
2021/07/09 Servers
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
Java版 单机五子棋
2022/05/04 Java/Android