在前端开发中,页面样式是必不可少的。通常一个页面中大部分的样式在写好后都不会再发生变化。但是,还有一小部分样式是可能会根据用户的操作来动态发生改变。
因此,在 Vue 中,除了可以按照常规的方式编写静态样式外,还可以使用动态 class 和 style 的方式来处理需要动态变化的样式。

一、动态 class

Vue 中提供了“对象”和“数组”两种语法来动态绑定 class。

1、对象语法

我们可以给 v-bind:class 设置一个对象,来实现 class 的动态绑定。
语法结构参考如下:

  1. <标签名 v-bind:class="{ class名一: 判断条件一, class名二: 判断条件二 }"></标签名>

说明:对象的键,是我们想要使用的 class 名;对象的值,最终会转换为一个布尔值,来决定当前 class 是否生效。

  1. <style>
  2. .active {
  3. color: red;
  4. }
  5. </style>
  6. <h1 v-bind:class="{ active: true }"></h1>
  7. <h1 v-bind:class="{ active: isActive }"></h1>
  8. <h1 v-bind:class="{ active: num >= 0 }"></h1>
  9. <script>
  10. new Vue({
  11. data() {
  12. return {
  13. isActive: false,
  14. num: 1
  15. }
  16. }
  17. })
  18. </script>

2、数组语法

除了对象的语法以外,我们也可以给 v-bind:class 设置一个数组,来实现 class 的动态绑定。

  1. <style>
  2. .active {
  3. color: red;
  4. }
  5. </style>
  6. <h1 v-bind:class="[isActive ? 'active': '']"></h1>
  7. <script>
  8. new Vue({
  9. data() {
  10. return {
  11. isActive: false
  12. }
  13. }
  14. })
  15. </script>

二、动态 style

Vue 中也提供了“对象”和“数组”两种语法来动态绑定 style。

1、对象语法

  1. <h1 v-bind:style="{ color: fontColor, width: width }"></h1>
  2. <script>
  3. new Vue({
  4. data() {
  5. return {
  6. fontColor: 'red',
  7. width: '100px'
  8. }
  9. }
  10. })
  11. </script>

2、数组语法

  1. <h1 v-bind:style="[style1, style2]"></h1>
  2. <script>
  3. new Vue({
  4. data() {
  5. return {
  6. style1: {
  7. color: 'red',
  8. width: '100px'
  9. },
  10. style2: {
  11. height: '100px'
  12. }
  13. }
  14. }
  15. })
  16. </script>