数据绑定一个常见需求是操作元素的 class 列表和它的内联样式。
因为它们都是属性 ,我们可以用v-bind 处理它们:只需要计算出表达式最终的字符串。
不过,字符串拼接麻烦又易错。因此,在 v-bind 用于 class 和 style 时, Vue.js 专门增强了它。
表达式的结果类型除了字符串之外,还可以是对象或数组。 1 绑定 HTML Class
1.1 对象语法
1.1.1 传给 v-bind:class 一个对象,以动态地切换 class
<style>
.active{
color:red;
}
</style> <div id="test1" :class="{active: isActive}">123</div> <script>
let app1 = new Vue({
el: '#test1',
data: {
isActive: true
}
});
</script>

          

1.1.2 在对象中传入更多属性用来动态切换多个 class 
此外, v-bind:class 指令可以与普通的 class 属性共存
<div id="test2" class="static" :class="{active:isActive,'text-danger':hasError}">456</div>

            <script>
let app2 = new Vue({
el: '#test2',
data: {
isActive: true,
hasError: false
}
});
</script>

  

1.1.3 也可以直接绑定数据里的一个对象
<div id="test4" class="static" :class="classObject">101112</div>

      <script>
let app4 = new Vue({
el: '#test4',
data: {
classObject: {
active: true,
'text-danger': false
}
}
});
</script>

也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:

<div id="test3" :class="classObject">789</div>

            <script>
let app3 = new Vue({
el: '#test3',
data: {
isActive: true,
hasError: null,
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.hasError, //&& 与找假 两个都要满足
'text-danger': this.hasError && this.hasError.type === 'fatal'
}
}
}
})
</script>
1.2 数组语法
1.2.1 简单用法
<div id="test5" class="static" :class="[activeClass, errorClass]">abc</div>

    <script>
let app5 = new Vue({
el: '#test5',
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
})
</script>

1.2.2 三元表达式根据条件切换class
<div id="test6" class="static" :class="[isActive?active:'',errorClass]">def</div>

    <script>
let app6 = new Vue({
el: '#test6',
data: {
isActive: true,
active: 'active',
errorClass: 'text-danger'
}
});
</script>

当有多个条件 class 时这样写有些繁琐。可以在数组语法中使用对象语法:
<div id="test7" class="static" :class="[{active:isActive}, errorClass]">ghi</div>

<script>
let app7 = new Vue({
el: '#test7',
data: {
isActive: true,
errorClass: 'text-danger'
}
});
</script>
1.3 用在组件上
当你在一个定制的组件上用到 class 属性的时候,这些类将被添加到根元素上面,这个元素上已经存在的类不会被覆盖。
<div id="test8">
<my-component class="static"></my-component>
<my-component1 class="static" :class="{'text-danger': isError}"></my-component1>
</div>
Vue.component('my-component', {
template: '<p class="active">晚上好</p>'
});
Vue.component('my-component1', {
template: '<p>晚上好</p>'
});
let app8 = new Vue({
el: '#test8',
data: {
isError: true
}
});
</script>

2 绑定内联样式
2.1 对象语法
2.1.1 v-bind:style 的对象语法十分直观——看着非常像 CSS ,其实它是一个 JavaScript 对象。
CSS 属性名可以用驼峰式(camelCase)或短横分隔命名(kebab-case)--建议驼峰:
<div id="test1" :style="{color:aC, fontSize: fz+'px'}">123</div>

        <script>
var app1 = new Vue({
el: '#test1',
data: {
aC: 'red',
fz: 16
}
})
</script>
    2.1.2 绑定一个样式对象通常更好,让模板更清晰
<div id="test2" :style="styleObj">456</div>
<script>
var app2 = new Vue({
el: '#test2',
data: {
styleObj: { //使用驼峰命名法
fontSize: '16px',
color: 'red',
fontWeight: 'bold'
}
}
})
</script>
2.2 数组语法
2.2.1
v-bind:style 的数组语法可以将多个样式对象应用到一个元素上:
<div id="test3" :style="[baseStyles, overridingStyles]">789</div>
<script>
var app3 = new Vue({
el: '#test3',
data: {
baseStyles: {
fontSize: '16px',
fontWeight: 'bold'
},
overridingStyles: {
cursor: 'pointer'
}
}
});
</script> 2.3 自动添加前缀 如 transform
<div id="test4" :style="{transform:value}">abc</div>
<script>
var app4 = new Vue({
el: '#test4',
data: {
value: 'rotate(7deg)'
}
})
</script>

ch5-Class 与 Style 绑定(v-bind:class v-bind:style)的更多相关文章

  1. OAF_VO系列3 - Binding Style绑定方式

    在OAF VO开发中,Binding Style主要用于对VO的where clause做动态传值,总共有三种方式 1.       Oracle Named 2.       Oracle Posi ...

  2. Vue.js-----轻量高效的MVVM框架(六、Class与Style绑定)

    这个相对来说简单,看一遍代码就懂. 一.完整片段: <!DOCTYPE html> <html> <head> <meta charset="UTF ...

  3. 【Vue】Vue框架常用知识点 Vue的模板语法、计算属性与侦听器、条件渲染、列表渲染、Class与Style绑定介绍与基本的用法

    Vue框架常用知识点 文章目录 Vue框架常用知识点 知识点解释 第一个vue应用 模板语法 计算属性与侦听器 条件渲染.列表渲染.Class与Style绑定 知识点解释 vue框架知识体系 [1]基 ...

  4. 关于vue.js中class与style绑定的学习

    练习代码: html: <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  5. Vue#Class 与 Style 绑定

    绑定HTMLCLASS 在我没看这之前,我觉得要写绑定class ,应该像绑定数据一样这么写 class ={{class-a}} 看官方教程时,不推荐这么写,推荐这样 v-bind:class=&q ...

  6. Vue中class与style绑定

    gitHub地址:https://github.com/lily1010/vue_learn/tree/master/lesson07 一 用对象的方法绑定class 很简单,举个栗子: <!D ...

  7. Vue.2.0.5-Class 与 Style 绑定

    Class 与 Style 绑定 数据绑定一个常见需求是操作元素的 class 列表和它的内联样式.因为它们都是属性 ,我们可以用v-bind 处理它们:只需要计算出表达式最终的字符串.不过,字符串拼 ...

  8. Knockout.Js官网学习(style绑定、attr绑定)

    Style绑定 style绑定是添加或删除一个或多个DOM元素上的style值.比如当数字变成负数时高亮显示,或者根据数字显示对应宽度的Bar.(注:如果你不是应用style值而是应用CSS clas ...

  9. Style绑定

    目的 style绑定可以添加或者移除DOM元素的样式值.这非常有用,例如,当值为负数时将颜色变为红色. (注:如果要修改CSS整个类,请使用css绑定) <div data-bind=" ...

  10. Class 与 Style 绑定

    将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强.表达式结果的类型除了字符串之外,还可以是对象或数组. 绑定 HTML Class 对象语法 <div cla ...

随机推荐

  1. 一种解决url的get请求参数传值乱码问题的方式

    做项目的时候发现url get请求传中文字符出现乱码问题,百度了一下,最后用一种比较容易理解的方式解决了.分享给大家! 经过百度,网友提到:url get方式提交的参数编码,只支持iso8859-1编 ...

  2. 锤子坚果pro突破京东10万好评,还有什么是锤子科技做不出...

    作为2017年手机圈明星产品的锤子科技坚果Pro,可是一点都不安分呢! 9月份锤子科技推出一款新机型--坚果Pro银魂定制版 这在动漫圈跟手机圈都掀起一股不小的浪潮. 外观漂亮,颜值超高,续航时间长. ...

  3. NHibernate教程(13)--立即加载

    本节内容 引入 立即加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过上一篇的介绍,我们知道了NHibernate中默认的加载机制--延迟加载.其本质就是使用GoF23中代理模式 ...

  4. 转:【Java集合源码剖析】LinkedList源码剖析

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/35787253   您好,我正在参加CSDN博文大赛,如果您喜欢我的文章,希望您能帮我投一票 ...

  5. 201521123057 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过? ...

  6. JAVA课程设计---学生基本信息管理系统(201521123039 王兴)

    1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...

  7. 201521123053《Java程序设计》第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 一些有关流与文件的知识点: 1. 字节缓冲流: BufferedInputStream(FileInputSt ...

  8. openfire:Openfire源代码在eclipse中的运行配置 + 与spark结合进行二次开发

    1.下载源代码:http://www.igniterealtime.org/downloads/source.jsp 2.把源代码解压出的openfire_src文件夹放至eclipse workpl ...

  9. 史上最全CentOS安装教程,图文结合

    这是我最近整理的一份最全的CentOS安装步骤,亲自测试步骤,步步都有截图,步骤清晰.按此教程可轻松装机,并且安装成功的主机能访问外部网络. 闲话不说,首先介绍一下本教程用到工具: VMware Wo ...

  10. SSH框架搭建最终版【测试、log4j、baseDao】

    最详细搭建SSH框架环境 本博文主要是讲解如何搭建一个比较规范的SSH开发环境,以及对它测试[在前面的搭建中,只是整合了SSH框架,能够使用SSH实现功能],而这次是相对规范的. 导入开发包 在Str ...