vue、uniapp中动态添加绑定style、class 9种方法实现

news/2024/7/10 2:29:07 标签: vue, vue.js, uni-app

9种方法介绍

  1. 直接使用静态class和style属性:

    • 使用场景:当class和style属性是固定不变的时候,可以直接在模板中写死。
    • 优点:简单直接,没有额外的计算和逻辑。
    • 缺点:无法根据条件动态修改class和style。
  2. 使用v-bind动态绑定class和style属性:

    • 使用场景:当class和style属性需要根据组件的data或props属性动态变化时,可以使用v-bind来动态绑定。
    • 优点:可以根据条件动态修改class和style。
    • 缺点:需要在模板中写表达式,有一定的复杂度。
  3. 使用计算属性来动态生成class和style对象:

    • 使用场景:当class和style属性的计算逻辑比较复杂时,可以使用计算属性来生成class和style对象。
    • 优点:代码可读性好,逻辑清晰。
    • 缺点:需要定义额外的计算属性。
  4. 使用动态绑定的class和style属性:

    • 使用场景:当class和style属性的计算逻辑比较简单时,可以直接在模板中使用表达式来动态生成class和style字符串。
    • 优点:简洁明了,没有额外的计算属性。
    • 缺点:逻辑稍微复杂时,可读性会变差。
  5. 使用数组语法来动态绑定class属性:

    • 使用场景:当class属性需要根据多个条件动态变化时,可以使用数组语法来动态绑定class属性。
    • 优点:可以根据多个条件动态修改class。
    • 缺点:数组语法相对复杂,可读性较差。
  6. 使用动态绑定的style属性:

    • 使用场景:当style属性需要根据组件的data或props属性动态变化时,可以使用动态绑定的style属性。
    • 优点:可以根据条件动态修改style。
    • 缺点:需要在模板中写表达式,有一定的复杂度。
  7. 使用对象语法动态绑定class属性:

    • 使用场景:当class属性需要根据多个条件动态变化时,可以使用对象语法来动态绑定class属性。
    • 优点:可以根据多个条件动态修改class。
    • 缺点:对象语法相对复杂,可读性较差。
  8. 使用计算属性动态绑定style属性:

    • 使用场景:当style属性的计算逻辑比较复杂时,可以使用计算属性来动态绑定style属性。
    • 优点:代码可读性好,逻辑清晰。
    • 缺点:需要定义额外的计算属性。
  9. 使用动态绑定的class和style属性,通过在模板中使用数组和对象语法来动态生成class和style字符串:

    • 使用场景:当class和style属性需要根据多个条件动态变化时,可以使用数组和对象语法来动态绑定class和style属性。
    • 优点:可以根据多个条件动态修改class和style。
    • 缺点:语法相对复杂,可读性较差。

具体实现

在Uniapp和Vue中,可以使用以下9种方法来动态添加绑定style和class:

  1. 使用v-bind指令(或简写为:class:style)来动态绑定class和style属性。可以通过计算属性或直接在模板中使用三元表达式来根据条件动态设置class和style属性。
<template>
  <div :class="{'active': isActive}" :style="{'color': textColor}">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      textColor: 'red'
    }
  }
}
</script>
  1. 使用v-bind指令(或简写为:class:style)来动态绑定class和style对象。可以在data中定义一个对象,根据条件动态设置class和style对象的属性。
<template>
  <div :class="classObject" :style="styleObject">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      classObject: {
        active: true,
        'text-color': true
      },
      styleObject: {
        color: 'red',
        fontSize: '16px'
      }
    }
  }
}
</script>
  1. 使用计算属性来动态生成class和style对象。可以根据组件的data或props属性计算出class和style对象,并在模板中使用计算属性。
<template>
  <div :class="computedClass" :style="computedStyle">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      textColor: 'red'
    }
  },
  computed: {
    computedClass() {
      return {
        active: this.isActive,
        'text-color': this.textColor === 'red'
      }
    },
    computedStyle() {
      return {
        color: this.textColor,
        fontSize: '16px'
      }
    }
  }
}
</script>
  1. 使用动态绑定的class和style属性,通过在模板中使用表达式来动态生成class和style字符串。
<template>
  <div :class="'active ' + (isActive ? 'active' : '')" :style="'color: ' + textColor">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      textColor: 'red'
    }
  }
}
</script>
  1. 使用数组语法来动态绑定class属性。可以在data中定义一个数组,根据条件动态设置class数组的元素。
<template>
  <div :class="classArray">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      isBold: true
    }
  },
  computed: {
    classArray() {
      return ['active', {'bold': this.isBold}]
    }
  }
}
</script>
  1. 使用动态绑定的style属性,通过在模板中使用对象语法来动态生成style字符串。
<template>
  <div :style="{ color: textColor, fontSize: fontSize + 'px' }">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      textColor: 'red',
      fontSize: 16
    }
  }
}
</script>
  1. 使用对象语法动态绑定class属性。可以在data中定义一个对象,根据条件动态设置class对象的属性。
<template>
  <div :class="classObject">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      isBold: true
    }
  },
  computed: {
    classObject() {
      return {
        active: this.isActive,
        bold: this.isBold
      }
    }
  }
}
</script>
  1. 使用计算属性动态绑定style属性。可以根据组件的data或props属性计算出style字符串,并在模板中使用计算属性。
<template>
  <div :style="computedStyle">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      textColor: 'red',
      fontSize: 16
    }
  },
  computed: {
    computedStyle() {
      return `color: ${this.textColor}; font-size: ${this.fontSize}px;`;
    }
  }
}
</script>
  1. 使用动态绑定的class和style属性,通过在模板中使用数组和对象语法来动态生成class和style字符串。
<template>
  <div :class="['active', { 'bold': isBold }]">Hello World</div>
  <div :style="[styleObject, { 'font-size': fontSize + 'px' }]">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isBold: true,
      styleObject: {
        color: 'red'
      },
      fontSize: 16
    }
  }
}
</script>

http://www.niftyadmin.cn/n/4990137.html

相关文章

《人工智能算法图解》书籍分享(包邮送书)

文章目录 人工智能介绍书籍分享抽奖包邮送书 人工智能介绍 人工智能算法是一种能够模拟人类智能行为的计算机算法。它通过分析和处理大量的数据&#xff0c;利用机器学习、深度学习和自然语言处理等技术&#xff0c;实现自主学习、推理和决策的能力。 人工智能算法的发展经历…

【教程】PyTorch Timer计时器

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] OpenCV的Timer计时器可以看这篇&#xff1a;Python Timer和TimerFPS计时工具类 Timer作用说明&#xff1a;统计某一段代码的运行耗时。 直接上代码&#xff0c;开箱即用。 import time import torch import os …

计算机毕设之基于python+echarts+mysql的图书馆可视化管理系统(文档+代码+部署教程)

系统阐述的是一款图书馆可视化管理系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体架构…

力扣88.合并两个有序数组

88. 合并两个有序数组 提示 简单 2.1K 相关企业 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 …

软件测试/测试开发丨文件上传与弹窗处理 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27071 一、文件上传 input标签可以直接使用send_keys(“文件路径/文件名”)上传文件 ele01 driver.find_element(By.ID,“上传按钮id”)ele01.send_keys(…

Oracle数据泵备份恢复(导出导入)详细语句

数据泵备份 查询已存在备份目录 select * from dba_directories;新建备份目录 create directory dbbak as /u01/dbbak;注意&#xff1a;在本地新建对应的物理目录 给指定用户赋权 grant read, write on directory dbbak to testuser; 或者直接把目录的权限设置为公开 g…

Python 连接 SQL 数据库 -pyodbc

文章目录 使用 pyodbc 模块从 Python 代码连接到 SQL 数据库配置用于 pyodbc Python 开发的开发环境创建用于 pyodbc Python 开发的 SQL 数据库使用 pyodbc 连接到 SQL连接和查询数据 推荐阅读 在 Windows、Linux 或 macOS 上使用 Python 连接到 SQL 数据库&#xff0c;有几个可…

mqtt安卓客户端

1.MQTT&#xff08;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于 发布/订阅 &#xff08;publish/subscribe&#xff09;模式的"轻量级"通讯协议&#xff0c; 该协议构建于TCP/IP协议上 。MQTT最大优点在于&#xff0c;可以以极少的代码和有限的带宽&…