# class 和 style绑定

### 绑定HTML class

- 对象语法

  - 给v-bind:class 传入一个对象 来动态切换class

     v-bind:class="{类名:判断条件}"

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

    > 表示active这个class是否存在 取决于isActive 的值转化过后是否为true

  - 传入更多字段来切换多个class  

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

    附带如下 data

    ```
    data: {
      isActive: true,
      hasError: false
    }
    ```

    元素渲染结果为：

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

    > 如果data 中的hasError的值变成 true
    >
    > 元素的渲染结果为：
    >
    > ```
    > <div class="active text-danger"></div>
    > ```

  - v-bind:class 可以和元素上普通的class属性并存

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

    附带如下data:

    ```
    data: {
      isActive: true,
      hasError: false
    }
    ```

    元素的渲染结果为：

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

- 数组语法

  - 可以把一个数组传给 v-bind:class 

    v-bind:class="[第一个类名, 第二个类名]"

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

    ```
    data: {
      activeClass: 'active',
      errorClass: 'text-danger'
    }
    ```

    渲染结果为：

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

    

  - 在数组中用对象语法

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

### 绑定内联样式

- 对象语法

  - 用javascript 对象表达css属性（不推荐）

    v-bind:style="{css属性名:  data中定义的属性值}"

    示例：

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

    附data:

    ```
    data: {
      activeColor: 'red',
      fontSize: 30
    }
    ```

    

  - 直接绑定到一个样式对象上（推荐）
    v-bind:style="data中的数据"

    ```
    <div v-bind:style="styleObject"></div>
    ```

    附data：

    ```
    data: {
      styleObject: {
        color: 'red',
        fontSize: '13px'
      }
    }
    ```

  - 绑定多个style对象

    ```
    <div v-bind:style="[static,choose]"></div>
    ```

    ```
    data: {
      static: {
        fontSize: '13px'
        border:'1px solid red'
      },
      choose:{
      	color:'red'
      }
    }
    ```

    

