vue动态绑定class的几种方法

vue动态绑定class的几种方法vue 动态绑定 class 的几种做法

一、对象语法
1、给v-bind:class 设置一个对象,可以动态地切换class,例如:

<div id="app"> <div :class="{'active':isActive}"></div> </div> <script> var app = new Vue({ 
    el:'#app', data:{ 
    isActive:true } }) </script> 

最终渲染结果:

2、对象中也可存在多个属性,动态切换class,:class 可以合class共存

<div id="app"> <div class="static" :class="{'active':isActive,'error':isError}"></div> </div> <script> var app = new Vue({ 
      el:'#app', data:{ 
      isActive:true, isError:false } }) </script> 

最终渲染结果:

3、当:class的表达式过长或逻辑复杂时,可以绑定一个计算属性,一般当条件多于两个时,都可以使用data或者computed

<div id="app"> <div :class="classes"></div> </div> <script> var app = new Vue({ 
        el:'#app', data:{ 
        isActive:true, isError:null }, computed:{ 
        classes(){ 
        return { 
        active:this.isActive && !this.error, 'text-fail':this.error && this.error.type ==='fail' } } } }) </script> 

二、数组语法
1、当需要应用多个class时,可以使用数组语法,给:class绑定一个数组,应用一个class列表:

<div id="app"> <div :class="[atvieCls,errorCls]"></div> </div> <script> var app = new Vue({ 
        el:'#app', data:{ 
        atvieCls:'active', errorCls:'error' } }) </script> 

最后渲染的结果:

2、使用三元表达式,根据条件切换class(当数据isActive为真时,样式active才会被应用)

<div id="app"> <div :class="[isActive ? activeCls : '',errorCls]"></div> </div> <script> var app = new Vue({ 
          el:'#app', data:{ 
          isActive:true, atvieCls:'active', errorCls:'error' } }) </script> 

渲染的结果为:

3、class有多个条件时,这样写较为烦琐,可以在数组语法中使用对象语法:

<div id="app"> <div :class="[{'active':isActive},errorCls]"></div> </div> <script> var app = new Vue({ 
            el:'#app', data:{ 
            isActive:true, errorCls:'error' } }) </script> 

渲染的结果为:

4、与对象语法一样,也可以使用data、computed、method三种方法,以计算属性为例:

<div id="app"> <button :class="classes"></button> </div> <script> var app = new Vue({ 
              el: '#app', data: { 
              size: 'large', disabled: true }, computed: { 
              classes: function () { 
              return [ 'btn', { 
              ['btn-'+this.size]: this.size!=='', ['btn-disabled']: this.disabled, } ] } } }) </script> 

最后渲染结果:

三、在组件上使用
如果直接在自定义组件上使用class或:class,样式规则会直接应用到这个组件的根元素上,例如声明一个简单的组件:

<script> Vue.component('my-component', { 
                  template: '

一些文本

'
}) </script>
<div id="app"> <my-component :class="'active':isActive"></my-component> </div> <script> var app = new Vue({ 
                  el: '#app', data: { 
                  isActive: true } }) </script> 

最终组件渲染后的结果为:

一些文本















版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205550.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:46
下一篇 2026年3月19日 下午5:46


相关推荐

  • 内存溢出和内存泄漏的区别

    内存溢出和内存泄漏的区别

    2021年10月21日
    38
  • ETL开发工具KETTLE使用教程「建议收藏」

    ETL开发工具KETTLE使用教程「建议收藏」Kettle的建立数据库连接、使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录。若存在,则更新。Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个…

    2022年6月3日
    410
  • java calendar类_Java Calendar类

    java calendar类_Java Calendar类Calendar类概述/***java.util.Calendar类:是一个日历类*Calendar类是一个抽象类,里边提供了很多操作日历字段的方法*如:YEAR、MONTH、DAYOFMONTH、HOUR**Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),*getInstance()方法返回了Calendar类的子…

    2022年4月30日
    39
  • 《Unity开发实战》——3.5节创建透明纹理贴图

    《Unity开发实战》——3.5节创建透明纹理贴图

    2022年3月4日
    40
  • 计算机机房安全设计规范,弱电机房建设规范要求

    计算机机房安全设计规范,弱电机房建设规范要求原标题:弱电机房建设规范要求工程中的数据中心机房建设是保证计算机网络设备和各级工作保障系统正常运转的关键。现在的计算机设备对运行环境要求较高。因此,必须按照一定的标准规范科学地设计机房。机房建设需要执行的标准主机房建设工程必须遵循国家机房设计标准规范的要求。场地要求计算机机房在多层建筑或高层建筑物内一般应设于第二、三层,水源充足,电力稳定可靠,应远离产生粉尘、油烟、有害气体以及贮存具有腐蚀性、易燃…

    2022年10月2日
    4
  • 自学java心路历程(学了半年。。。直到更久。。。。。)[通俗易懂]

    自学java心路历程(学了半年。。。直到更久。。。。。)[通俗易懂]自学背景环境:我是91年的。之前在小贷行业,混了快四年,经历过3家公司倒闭,在找工作发现没什么特技,太难。毕业都近4年了。但是我觉得必须要有所改变,要学。然后听了朋友的意见,不去培训学校自己自学。自学过程:自学的是java,18年三月份的时候因为大学学过2级C语言。java基础部分是在网上找到,大概都能看懂进去,一天看个7,8个小时都OK,但是比较少敲代码,主要学的是javase。java基…

    2022年6月13日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号