vue的class与style

本文参考了vuejs的官方文档,结合自己的理解整理而成的读书笔记!

将 v-bind 用于 class 和 style 时,表达式结果的类型除了字符串之外,还可以是对象或数组

对象语法

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

// 这里的类名是'active',由变量isActive的真假来控制
// 还有普通的class属性,类名为static
// 当对于的类名的变量值发生变化时,div的class值也会响应式的发生变化

// 绑定的数据对象不必内联定义在模板里
<div v-bind:class="classObject"></div>
data: {
  classObject: {
    active: true,
    // 由于'text-danger'不是正确的标识符的写法,所以需要加上引号,推荐都加上引号
    'text-danger': false
  }
}

// 也可以在绑定一个返回对象的计算属性
<div v-bind:class="classObject"></div>
data: {
  isActive: true,
  error: null
},
computed: {
  classObject: function () {
    return {
      // 对于表达式相对复杂的情况下或者class依赖的变量比较多,推荐使用计算属性的写法,条理清晰且便于维护
      active: this.isActive && !this.error,
      'text text-danger': this.error && this.error.type === 'fatal'
    }
  }
}

数组语法

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

data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}
// 这里'active'类的显示由表达式控制,而'text-danger'是一直存在的,所以推荐下面这样写
<div v-bind:class="[isActive ? activeClass : '']" class='text-danger'></div>

// 当有多个条件来控制'active'类的显示时,表达式无疑会很复杂,这样我觉得还不如直接用对象语法结合计算属性来的优雅

用在组件上

当在一个自定义组件上使用 class 属性时,这些类将被添加到该组件的根元素上面。这个元素上已经存在的类不会被覆盖

Vue.component('my-component', {
  template: '<p class="foo bar">Hi</p>'
})

<my-component class="baz boo"></my-component>

// 将会被渲染成'foo bar baz boo',p标签原有的'foo bar'类名不会被覆盖
<p class="foo bar baz boo">Hi</p>

自动添加前缀

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

绑定内联样式-对象语法

行类样式最好也是对象语法计算属性使用,行类样式的一大好处是权重比class的高

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

computed: {
  styleObject() {
    return {
      color: 'red',
      fontSize: '13px'
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值