VUE学习十五,Class与Style绑定

一、绑定HTML Class

1. 对象语法

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

<div v-bind:class="{ active: isActive }">这是测试一</div>

又或者:

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

当 isActive 或者 hasError 变化时,class 列表将相应地更新。

甚至可以用如下方法:

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

整体代码参考:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>VUE简单示范</title>
<script type="text/javascript" src="../js/vue.js" charset="utf-8"></script>
</head>
<body>
<div id="app-6">
<div v-bind:class="{ active: isActive }">这是测试一</div>
<div v-bind:class="classObject">这是测试二</div>
</div>
<script>
var app6 = new Vue({
  el: '#app-6',
  data: {
    isActive: false,
    isError: true
  },
  computed: {
  classObject: function () {
    return {
      active: this.isActive && !this.isError,
      'text-danger': this.isError
    }
  }
}
})
</script>
<style>
    .active { color:#FF0000;}
    .text-danger { font-size:100px;}
</style>
</body>
</html>
View Code

2. 数组语法

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

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

这样写将始终添加 errorClass,但是只有在 isActive 是 true 时才添加 activeClass

二、绑定内联样式

1. 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'
  }
}

2. 数组语法

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

3. 整体代码参考

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>VUE简单示范</title>
<script type="text/javascript" src="../js/vue.js" charset="utf-8"></script>
</head>
<body>
<div id="app-6">
<div v-bind:class="{ active: isActive }">这是测试一</div>
<div v-bind:class="classObject">这是测试二</div>
<div  v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">这是测试三</div>
<div v-bind:style="styleObject">这是测试四</div>
</div>
<script>
var app6 = new Vue({
  el: '#app-6',
  data: {
    isActive: false,
    isError: true,
    activeColor: 'red',
    fontSize: 30,
    styleObject: {
        color: 'red',
        fontSize: '13px'
      }
  },
  computed: {
  classObject: function () {
    return {
      active: this.isActive && !this.isError,
      'text-danger': this.isError
    }
  }
}
})
</script>
<style>
    .active { color:#FF0000;}
    .text-danger { font-size:100px;}
</style>
</body>
</html>
View Code

 

本文参考:

https://cn.vuejs.org/v2/guide/class-and-style.html#%E7%BB%91%E5%AE%9A%E5%86%85%E8%81%94%E6%A0%B7%E5%BC%8F

posted @ 2021-07-08 13:30  那些年的事儿  阅读(49)  评论(0编辑  收藏  举报