VUE中如何动态绑定类名和样式

 更新时间:2023年06月05日 10:31:59   作者:A7Feather  
这篇文章主要介绍了VUE中如何动态绑定类名和样式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

VUE动态绑定类名和样式

1、使用v-bind属性绑定class和style属性

2、动态类名两种方式:

  • 对象形式:给对象属性赋boolean类型值
  • 数组配合三元运算符,通过改变条件的真假实现类名的添加和删除
<template>
  <div>
    <div :class="classObj">动态绑定对象</div>
    <div :class="['namebox', activeStatus ? 'activeNamebox' : '']">
      动态绑定数组
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      classObj: {
        namebox: true,
        activeNamebox: false
      },
      activeStatus: false
    }
  }
}
</script>
<style>
.namebox {
  color: #777;
}
.activeNamebox {
  background-color: aquamarine;
}
</style>

3、动态样式的两种方式

  • 对象形式
  • 数组(包含样式对象)形式:可以同时添加多个样式对象
<template>
  <div>
    <div :style="styleObj1">对象形式</div>
    <div :style="[styleObj1, styleObj2]">数组形式</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      styleObj1: {
        color: '#eee'
      },
      styleObj2: {
        textAlign: center
      }
    }
  }
}
</script>
<style></style>

动态绑定样式——动态绑定style写法 & 动态class写法

1、动态绑定style写法

注意:

凡是有-的style属性名都要变成驼峰式,比如font-size要变成fontSize

除了绑定值,其他的属性名的值要用引号括起来,比如backgroundColor:'#00a2ff'而不是 backgroundColor:#00a2ff

1.1、对象 

<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
<div :style="{color:(index == 1 ? conFontColor:'#000')}"></div>

1.2、数组 

<div :style="[baseStyles, overridingStyles]"></div>
<div :style="[{color:(index == 1 ? conFontColor:'#000')},{fontSize:'18px'}]"></div>

1.3、三元运算符 

<div :style="{color:(index == 1 ? conFontColor:'#000')}"></div>
<div :style="[{color:(index == 1 ? conFontColor:'#000')},{fontSize:'18px'}]"></div>
<div :style="item.layerName === activeLayerName?'font-weight:700' : 'font-weight:400'"></div>
<!-- 写法一 -->
<div :style="[{float: id === '12' ? 'left:'right}]"></div>
<!-- 写法二 -->
<div :style="float: nameList.length === 20 ? 'height:64px' : 'height:32px' "></div>
<!-- 写法三 -->
<div :style="{border:( nameId ===item.id ?'2px solid #4C78FF': 'red')}"></div>

1.4、绑定data对象 

<div :style="styleObject"></div>
<script>
    data() {
        return{
          styleObject: {
            color: 'red',
            fontSize: '14px'
          }  
        }
    }
</scrip>

2、动态class写法

2.1、对象方法

<!-- isActive —— true/false -->
<div :class="{ 'active': isActive  }">{{name}}</div> 

2.2、判断是否绑定一个active 

<div :class="{'active' : isActive == -2}"  >{{name}}</div>
<div :class="{'active' : isActive == item.nameId}"  >{{item.name}}</div>

2.3、绑定并判断多个

2.31、第一种:用逗号隔开

<div :class="{ 'active': isActive, 'user': isUser }"></div>

2.32、放在data里面 

<div :class="classObject">{{name}}</div>
<script>
data() {
  return {
    classObject:{ active: true, user:false }
  }
}
</script>

2.33、使用computed属性

<div :class="classObject">{{name}}</div>
<script>
data() {
  return {
    isActive: true,
    isUser: false
  }
},
computed: {
  classObject: function () {
    return {
      active: this.isActive,
      user:this.isUser
    }
  }
}
</script>

2.4、数组方法

2.41、单纯数组 

<div :class="[isActive,isUser]">{{name}}</div>
<script>
data() {
  return{
    isActive:'active',
    isUser:'user'
 }
}
</script>

2.42、数组与三元运算符结合判断选择需要的class

注意:三元运算符后面的“:”两边的class需要加上单引号,否则不能正确渲染

:class="[isActive?‘active':'']"
或者
:class="[isActive1?‘active':'']"
或者
:class="[isActiveindex?‘active':'']"
或者
:class="[isActive==index?‘active':‘otherActiveClass']"

2.43、数组对象结合动态判断

//前面这个active在对象里面可以不加单引号,后面这个sort要加单引号
:class="[{ active: isActive }, ‘sort']"
或者
:class="[{ active: isActive1 }, ‘sort']"
或者
:class="[{ active: isActiveindex }, ‘sort']"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue+ElementUI创建一个带有进度显示的文件下载和打包组件功能

    Vue+ElementUI创建一个带有进度显示的文件下载和打包组件功能

    如何使用 Vue 创建一个带有进度显示和打包功能的文件下载组件,我们探讨了如何导入必要的包,构建组件的基础结构,实现文件下载与进度显示,以及如何将文件打包为 ZIP 格式供用户下载
    2024-08-08
  • Vue + AnimeJS实现3d轮播图的详细代码

    Vue + AnimeJS实现3d轮播图的详细代码

    轮播图在开发中是经常用到的,3D轮播图是其中最常用的一种,所以在这篇文章中将给大家介绍Vue + AnimeJS实现3d轮播图,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-01-01
  • vue3 api自动导入神器推荐

    vue3 api自动导入神器推荐

    在做vue3项目中时,每次使用都需要先进行引入,下面这篇文章主要给大家介绍了关于vue3 api自动导入的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • vant-ui框架的一个bug(解决切换后onload不触发)

    vant-ui框架的一个bug(解决切换后onload不触发)

    这篇文章主要介绍了vant-ui框架的一个bug(解决切换后onload不触发),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue3鼠标经过显示按钮功能的实现

    vue3鼠标经过显示按钮功能的实现

    本篇文章介绍了如何使用 Vue3 实现一个鼠标经过显示按钮的效果,我们使用了 Vue3 的 Composition API 来创建响应式的数据,并使用了 @mouseover 和 @mouseleave 事件来监听鼠标的移入和移出事件,感兴趣的朋友一起看看吧
    2024-04-04
  • vue实现静态页面点赞和取消点赞功能

    vue实现静态页面点赞和取消点赞功能

    这篇文章主要为大家详细介绍了vue实现静态页面点赞和取消点赞的功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 基于vue-resource jsonp跨域问题的解决方法

    基于vue-resource jsonp跨域问题的解决方法

    下面小编就为大家分享一篇基于vue-resource jsonp跨域问题的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Vue组件设计-Sticky布局效果示例

    Vue组件设计-Sticky布局效果示例

    这篇文章主要介绍了Vue组件设计-Sticky布局,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 关于echarts 清空上一次加载的数据问题

    关于echarts 清空上一次加载的数据问题

    这篇文章主要介绍了关于echarts 清空上一次加载的数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue中插槽slot的用法详解

    Vue中插槽slot的用法详解

    插槽(Slot)是Vue.js中一个非常重要的概念,它极大地提高了组件的复用性和灵活性,通过插槽,我们可以自定义组件的内容,使其能够适应不同的场景,本文将结合实际案例,详细介绍Vue中插槽的基本用法、类型以及高级技巧,需要的朋友可以参考下
    2024-11-11

最新评论