操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。

绑定 HTML Class

对象语法

我们可以传给 v-bind:class 一个对象,以动态地切换 class:

<div v-bind:class="{ active: isActive }"></div>

上面的语法表示 active 这个 class 存在与否将取决于数据 property isActive 的真实性。

你可以在对象中传入更多字段来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class attribute 共存。当有如下模板:

<divclass="static"v-bind:class="{ active: isActive, 'text-danger': hasError }"
></div>

和如下 data:

data: {isActive: true,hasError: false
}

结果渲染为:

<div class="static active"></div>

当 isActive 或者 hasError 变化时,class 列表将相应地更新。例如,如果 hasError 的值为 true,class 列表将变为 “static active text-danger”。

绑定的数据对象不必内联定义在模板里:

<div v-bind:class="classObject"></div>
data: {classObject: {active: true,'text-danger': false}
}

渲染的结果和上面一样。我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式:

<div v-bind:class="classObject"></div>
data: {isActive: true,error: null
},
computed: {classObject: function () {return {active: this.isActive && !this.error,'text-danger': this.error && this.error.type === 'fatal'}}
}

数组语法

我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:

<div v-bind:class="[activeClass, errorClass]"></div>
data: {activeClass: 'active',errorClass: 'text-danger'
}

渲染为:

<div class="active text-danger"></div>

如果你也想根据条件切换列表中的 class,可以用三元表达式:

<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

这样写将始终添加 errorClass,但是只有在 isActive 是 truthy[1] 时才添加 activeClass。

不过,当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象语法:

<div v-bind:class="[{ active: isActive }, errorClass]"></div>

绑定内联样式

对象语法

v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {activeColor: 'red',fontSize: 30
}

直接绑定到一个样式对象通常更好,这会让模板更清晰:

<div v-bind:style="styleObject"></div>
data: {styleObject: {color: 'red',fontSize: '13px'}
}

同样的,对象语法常常结合返回对象的计算属性使用。

数组语法

v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:

<div v-bind:style="[baseStyles, overridingStyles]"></div>

自动添加前缀

当 v-bind:style 使用需要添加浏览器引擎前缀的 CSS property 时,如 transform,Vue.js 会自动侦测并添加相应的前缀。

多重值

从 2.3.0 起你可以为 style 绑定中的 property 提供一个包含多个值的数组,常用于提供多个带前缀的值,例如:

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

这样写只会渲染数组中最后一个被浏览器支持的值。在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex。

6.Vue Class 与 Style 绑定相关推荐

  1. vue Class 与 Style 绑定

    1. Class 绑定 1.1 对象语法 普通对象  单个类 <div v-bind:class="{ active: isActive }"></div> ...

  2. vue class与style绑定

    介绍 元素的class和style属于attribute,所以可以用v-bind处理.而在v-bind用于classhestyle时,vue.js专门增强了一下,接受的表达式结果除了字符串,还要数组和 ...

  3. Vue - class与style绑定

    1.通过v-bind绑定一个class A:直接绑定 B:通过v-bind绑定一个对象 C:绑定一个返回对象的计算属性 D:绑定一个数组对象 2.绑定内联样式 A:直接子啊属性名上面绑定 B:绑定到一 ...

  4. Vue-关于内联样式style绑定

    原本准备把style绑定和class绑定写在一起的,但我还是分开了,对class绑定不太清楚的伙伴也可以先去看看上篇Vue-关于class绑定(基础学习)_绍昆ya的博客-CSDN博客 关于内联样式s ...

  5. Vue.js Class 与 Style 绑定

    操作元素的 class 列表和内联样式是数据绑定的一个常见需求.因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可.不过,字符串拼接麻烦且易错.因此,在将  ...

  6. vue html绑定数组,VueJs Class 与 Style 绑定 数组语法

    应用介绍 操作元素的 class 列表和内联样式是数据绑定的一个常见需求.因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可.不过,字符串拼接麻烦且易错.因 ...

  7. vue清除绑定的class_vue 的 class 和 style 绑定的方法【05】

    学习要点:1.绑定 class 2.绑定 style 本节课我们来开始学习 Vue 的 class 和 style 绑定的方法. 一.绑定 class 1. v-bind:class 不但可以设置 c ...

  8. Vue中计算属性与class,style绑定

    var vm=new Vue({ el:'#app', data:{ a:2, }, computed:{ //这里的b是计算属性:默认getter b:{ get:function(){ retur ...

  9. Vue.2.0.5-Class 与 Style 绑定

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

最新文章

  1. 记录EntityValidationErrors的详细信息
  2. 【项目管理】认识项目相关方(干系人)管理
  3. Spring Boot 2 学习笔记(2 / 2)
  4. 门前异动监控、AI 人脸识别!360 发布新型智能门铃
  5. c语言 单片机模拟,【51单片机】普通I/O口模拟SPI口C语言程序
  6. Cookies 和 Session的区别
  7. 图片去水印工具(Teorex Inpaint) v7.1
  8. 天文竞赛怎么用计算机,师范生教学技能大赛!计算机设计大赛!主持礼仪风采大赛!天文台活动预告!民宿企划竞赛!舞蹈大赛!...
  9. 自监督学习(Self-Supervised Learning)
  10. 蓝牙键盘 android手机游戏,使用BluetoothHidDevice将安卓手机同时模拟成鼠标和键盘...
  11. 数字证书包含哪些内容
  12. BootStrap一页通(样式+组件+插件)(全)
  13. html+css day1 如何用Mac创建html文件
  14. 【全球品牌】圣经中人物的名字有哪些?
  15. 浙江中医药OJ暑期训练五题解
  16. 博世BOSCH EDI DESADV发货通知详解
  17. 计算机专业推山西新华电脑学校,青春启航,乘风破浪|山西新华电脑学校2021届毕业典礼完美落幕...
  18. MG动画图形变化AE脚本shapemonkey mac版
  19. 23-动态SQL之IF语句
  20. Oracle 12安装教程

热门文章

  1. DRF (Django REST framework) 框架介绍
  2. MySQL下的SQL语句
  3. 2018美团笔试字符串问题
  4. 默认轮播,鼠标移入停止,移出继续
  5. 构件开发常见问题和错误的解决方案和处理方法
  6. andorid 第一天 搭建环境(于本博另一篇文章 ubuntu下安装andoird SDK相同内容)
  7. android edittext设置内容为空,android – 我将EditText的InputType设置为TYPE_NULL后无法更改...
  8. layui表格更改一列数据_layui数据表格隐藏列的方法介绍
  9. Java黑皮书课后题第5章:**5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票。这两位数是不同的
  10. 轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑