在我们平常的前端开发中少不了对DOM的操作,以及样式的动态控制,那我们在使用vue的时候该如何灵活的绑定class呢

1.最简单一个class绑定

  1. v-bind:class设置一个对象,可以动态地切换class
  2. 例如:
  3. <div id="app">
  4. <div :class ="{ 'active':isActive }"></ div>
  5. </div>
  6. <script>
  7. new Vue({
  8. el :'#app',
  9. data: {
  10. isActive: true
  11. }
  12. })
  13. </script>
  14. 最终渲染结果为=====><div class="active"></div>

2对象中也可以传入多个属性,来动态切换class,同时class也可以与:class共存,看下面代码↓

  1. <div id="app">
  2. <div class="title" :class ="{ 'active':isActive, 'addcolor':isAdd }"></ div>
  3. </div>
  4. <script>
  5. new Vue({
  6. el :'#app',
  7. data: {
  8. isActive: true,
  9. isAdd: true
  10. }
  11. })
  12. </script>
  13. 最终渲染结果为=====><div class="title active addcolor"></div>

3.当class需要绑定比较多,而且逻辑比较复杂时,我们可以给:class的值绑定一个计算属性,看代码↓

  1. <div id="app">
  2. <div :class ="finalclass"></ div>
  3. </div>
  4. <script>
  5. new Vue({
  6. el :'#app',
  7. data: {
  8. isActive: true,
  9. isAdd: true,
  10. error: true
  11. },
  12. computed: {
  13. return {
  14. 'active': this.isActive && this.isAdd,
  15. 'error': this.eroor
  16. }
  17. }
  18. })
  19. </script>
  20. 最终渲染结果为=====><div class="active error"></div>

4.我们也可以给:class绑定数组格式,以及在数组里再加逻辑,看代码↓

  1. <div id="app">
  2. <div :class ="[ {'active': isActive }, errorShow ]"></div>
  3. </div>
  4. <script>
  5. new Vue({
  6. el :'#app',
  7. data : {
  8. isActive : true ,
  9. errorShow : 'error'
  10. }
  11. })
  12. </script>
    最终渲染结果为=====><div class="active error"></div>

5.再来看一种组合式使用方法,看下面代码↓

  1. <div id="app">
  2. <button :class ="finalclass"></button>
  3. </div>
  4. <script>
  5. new Vue({
  6. el :'#app',
  7. data: {
  8. size: 'large',
  9. disabled: true
  10. },
  11. computed: {
  12. finalclass: function (){
  13. return [
  14. 'btn',
  15. {
  16. [ 'btn-' + this.size ]: this.size !== '',
  17. [ 'btn-disabled']: this.disabled
  18. }
  19. ]
  20. }
  21. }
  22. })
  23. </script>
  24. 最终渲染结果为=====><button class ="btn btn-large btn-disabled"></button>

6.绑定内联样式

  1. <div id="app">
  2. <div :style ="finalstyle"></div>
  3. </div>
  4. <script>
  5. new Vue({
  6. el :'#app',
  7. data: {
  8. finalstyle: {
  9. color: 'blue',
  10. fontSize: 16+'px'
  11. //这里css属性的名称用驼峰命名或短横线分割命名
  12. }
  13. }
  14. })
  15. </script>
  16. 最终渲染结果为=====><div style="color: blue; font-size: 16px;"></div>

应用多个样式对象时,也可以使用数组语法:

<div :style="style1, style2">123</div>

----------------------------------------------------

vue里如何灵活的绑定class以及内联style的更多相关文章

  1. vue中,class、内联style绑定、computed属性

    1.绑定Class ①对象语法 <li :class="{ 'active': activeIdx==0 }" @click="fnClickTab(0)" ...

  2. vue 绑定 class 和 内联样式(style)

    <div id="app31"> <!--多个属性 ,号隔开--> <!-- v-bind:style="{fontSize: fontSi ...

  3. vue 组件高级用法(递归组件,内联模板,动态组件,异步组件)

  4. vue select下拉框绑定默认值

    vue select下拉框绑定默认值: 首先option要加value值,以便v-model可以获取到对应选择的值 一.当没有绑定v-model,直接给对应的option加selected属性 二.当 ...

  5. vue之单表输入绑定

    vue的核心:声明式的指令和数据的双向绑定. 那么声明式的指令,已经给大家介绍完了.接下来我们来研究一下什么是数据的双向绑定? 另外,大家一定要知道vue的设计模式:MVVM M是Model的简写,V ...

  6. vue 之 表单输入绑定

    vue的核心:声明式的指令和数据的双向绑定. 那么声明式的指令,已经给大家介绍完了.接下来我们来研究一下什么是数据的双向绑定? 另外,大家一定要知道vue的设计模式:MVVM M是Model的简写,V ...

  7. js里的发布订阅模式及vue里的事件订阅实现

    发布订阅模式(观察者模式) 发布订阅模式的定义:它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. 发布订阅模式在JS中最常见的就是DOM的事件绑定与触发 ...

  8. vue中v-model 数据双向绑定

    表单输入绑定 v-model 数据双向绑定,只能应用在input /textare /select <div id="app"> <input type=&quo ...

  9. Vue表单控件绑定

    前面的话 本文将详细介绍Vue表单控件绑定 基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.v-model本质上不过是语法糖,它负 ...

随机推荐

  1. vue不是内部或外部命令解决验证方案

    一.前提 1.该教程是在你已经安装配置好node.js和express情况下 2.你已经完成了vue和vue-cli的全局安装 3.完成以上2步后,使用vue指令,会显示"vue不是内部或外 ...

  2. python3环境搭建(uWSGI+django+nginx+python+MySQL)

    1.系统环境,必要知识 #cat /etc/redhat-release CentOS Linux release (Core) #uname -r -.el7.x86_64 暂时关闭防护墙,关闭se ...

  3. 移动通信最先进的音频编解码器EVS及用好要做的工作

    语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音 ...

  4. Django:Python3.6.2+Django2.0配置MySQL

    持续学习Django中... Django默认使用的数据库是python自带的SQLlite3,但SQLlite并不适用于大型的项目,因此我将数据库换成了MySQL,下面介绍下Django如何配置数据 ...

  5. 一文学会Scala

    整体介绍 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. 联邦理工学院洛桑(EPFL)的Martin Odersky于2001 ...

  6. LeetCode算法题-Unique Morse Code Words(Java实现)

    这是悦乐书的第318次更新,第339篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是804).国际莫尔斯电码定义了一种标准编码,其中每个字母映射到一系 ...

  7. C#简单继承示例详解——快速入门

    在面向对象当中继承是非常重要的,也是面向对象的三大特性之一(继承.封装.多态),今天我们来揭开他的神秘面纱. 话不多说,我们上菜. using System; using System.Collect ...

  8. maven 依赖中scope标签的配置范围详解

    在创建Maven项目时,需要在pom.xml 文件中添加相应的依赖,其中有一个scope标签,该标签是设置该依赖范围 (maven项目包含三种classpath{编译classpath,测试class ...

  9. vue 脚手架 立即可以写业务 vue + vue-router + less + axios + elementUI + moment

    https://github.com/cynthiawupore/wq-cli

  10. SAP MM已经转成PO的采购申请Item依旧可以被删除?

    SAP MM已经转成PO的采购申请Item依旧可以被删除? 笔者测试发现,我们可以删除已产生PO的PR item, 系统只是给一个警告信息,不阻止保存. Purchase orders already ...