vue动态绑定样式 动态绑定class & style

该文详细介绍了在Vue.js中如何动态地绑定元素的class和style,包括根据条件判断是否添加类名、绑定多个类、使用三元运算符以及结合静态样式的方法。同时,提到了style属性名的驼峰式转换规则和对象、数组、三元运算符等多种绑定方式。
摘要由CSDN通过智能技术生成

 目录

一、动态绑定class 

 1.判断是否绑定一个类名

2.判断是否绑定一个active

3. 判断绑定多个

4. 把需要绑定的类名储存到data中

5.三元判断

6.动态静态结合

# 完整代码

二、动态绑定style写法

1.对象绑定

2.数组绑定

3. 三元运算符

4.绑定data对象

5. 动态静态结合

# 完整代码


一、动态绑定class 

项目中会需要根据不同的情况判断是否添加类名

 1.判断是否绑定一个类名

<div :class="{ 'active': isActive }">1</div>

2.判断是否绑定一个active

<div :class="{'active' : isActive == 1}">2</div>
<div :class="{'active' : isActive == num}">2</div>

3. 判断绑定多个

<div :class="{ 'active': isActive,'active1':isActive }">3</div>

4. 把需要绑定的类名储存到data中

<div :class="classObject">3</div>
<div :class="[isActive,isUser]">3</div>

5.三元判断

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

<div :class="[ isActive ? 'active' : '']">4</div>
<div :class="[ isActive==1 ? 'active' : '']">4</div>

6.动态静态结合

<div :class="[{ 'active': isActive }, 'user']">5</div>

# 完整代码

<template>
  <div class="a">
    <!-- 1.判断是否绑定一个类名 -->
    <div :class="{ 'active': isActive }">1</div>

    <!-- 2.判断是否绑定一个active -->
    <div :class="{'active' : isActive == -2}">2</div>
    <div :class="{'active' : isActive == item}">2</div>

    <!-- 3. 判断绑定多个 -->
    <div :class="{ 'active': isActive,'user':isActive }">3</div>
      <!--4. 把需要绑定的类名储存到data中 -->
    <div :class="classObject">3</div>
    <div :class="[isActive,isUser]">3</div>

    <!-- 4.三元判断 -->
    <!-- 注意:三元运算符后面的“:”两边的class需要加上单引号,否则不能正确渲染 -->
    <div :class="[ isActive ? 'active' : '']">4</div>
    <div :class="[ isActive==1 ? 'active' : '']">4</div>

    <!-- 5.动态静态结合 -->
    <div :class="[{ 'active': isActive }, 'user']">5</div>
    
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true, 
      classObject:{ active: true, user:false },
      isActive:'active',
      isUser:'user'
    };
  },
};
</script>

<style scoped>
.a > div {
  float: left;
  width: 200px;
  height: 200px;
border: 1px solid #000;
}
.active {
  float: left;
  margin: 10px;
  width: 200px;
  height: 200px;
  background-color: red;
}
.user {
  float: left;
  margin: 10px;
  width: 200px;
  height: 200px;
  background-color: blueviolet;
}
</style>

二、动态绑定style写法

注意:

  • 凡是有-的style属性名都要变成驼峰式,比如background-color要变成backgroundColor
  • 除了绑定值,其他的属性名的值要用引号括起来
    • 比如 backgroundColor: "#000f" 而不是 backgroundColor:#000

1.对象绑定

<div :style="{ color: isActive, fontSize: num + 'px' }">1</div>

2.数组绑定

<div :style="[Styles1, Styles2]">2</div>
<div :style="[{ Styles1:index==1 },{ Styles2: index==1 }]">2</div>

3. 三元运算符

<div :style="{ color: index == 1 ? conFontColor : '#000' }">3</div>
<div :style=" isActive === styleObject.color ? 'color:red': 'color:aqua'" >3</div>
<div :style="[{ float: index == 1 ? 'left' : 'right' },{float: index == 1 ? 'height:64px' : 'height:32px' }]">3</div>

4.绑定data对象

<div :style="styleObject">4</div>

5. 动态静态结合

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

# 完整代码

<template>
  <div>
    <!-- 1.对象绑定  -->
    <div :style="{ color: isActive, fontSize: num + 'px' }">1</div>
    <div :style="{ color: index == 1 ? conFontColor : '#000' }">1</div>

    <!-- 2.数组绑定  -->
    <div :style="[Styles1, Styles2]">2</div>
    <div :style="[{ Styles1:index==1 },{ Styles2: index==1 }]">2</div>

    <!-- 3. 三元运算符  -->
    <div :style="{ color: index == 1 ? conFontColor : '#000' }">3</div>
    <div :style=" isActive === styleObject.color ? 'color:red': 'color:aqua'" >3</div>
    <div :style="[{ float: index == 1 ? 'left' : 'right' },{float: index == 1 ? 'height:64px' : 'height:32px' }]">3</div>

    <!-- 4.绑定data对象  -->
    <div :style="styleObject"></div>

    <!-- 5. 动态静态结合 -->
     <div :style="[{ color: index == 1 ? conFontColor : '#000' },{ fontSize: '18px' }]">5</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      index:1,
      isActive :'red',
      num:18,
      conFontColor:'#fff',
      styleObject: {
        color: "red",
        fontSize: "14px",
      },
      Styles1:'color: "red"',
      Styles2:'fontSize: "14px"'
    };
  },
};
</script>

<style scoped>
div{
  width: 100px;
  height: 100px;
  border: 1px solid #000;
}
</style>

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值