vue、uniapp中动态添加绑定style、class 9种方法实现
9种方法介绍
-
直接使用静态class和style属性:
- 使用场景:当class和style属性是固定不变的时候,可以直接在模板中写死。
- 优点:简单直接,没有额外的计算和逻辑。
- 缺点:无法根据条件动态修改class和style。
-
使用v-bind动态绑定class和style属性:
- 使用场景:当class和style属性需要根据组件的data或props属性动态变化时,可以使用v-bind来动态绑定。
- 优点:可以根据条件动态修改class和style。
- 缺点:需要在模板中写表达式,有一定的复杂度。
-
使用计算属性来动态生成class和style对象:
- 使用场景:当class和style属性的计算逻辑比较复杂时,可以使用计算属性来生成class和style对象。
- 优点:代码可读性好,逻辑清晰。
- 缺点:需要定义额外的计算属性。
-
使用动态绑定的class和style属性:
- 使用场景:当class和style属性的计算逻辑比较简单时,可以直接在模板中使用表达式来动态生成class和style字符串。
- 优点:简洁明了,没有额外的计算属性。
- 缺点:逻辑稍微复杂时,可读性会变差。
-
使用数组语法来动态绑定class属性:
- 使用场景:当class属性需要根据多个条件动态变化时,可以使用数组语法来动态绑定class属性。
- 优点:可以根据多个条件动态修改class。
- 缺点:数组语法相对复杂,可读性较差。
-
使用动态绑定的style属性:
- 使用场景:当style属性需要根据组件的data或props属性动态变化时,可以使用动态绑定的style属性。
- 优点:可以根据条件动态修改style。
- 缺点:需要在模板中写表达式,有一定的复杂度。
-
使用对象语法动态绑定class属性:
- 使用场景:当class属性需要根据多个条件动态变化时,可以使用对象语法来动态绑定class属性。
- 优点:可以根据多个条件动态修改class。
- 缺点:对象语法相对复杂,可读性较差。
-
使用计算属性动态绑定style属性:
- 使用场景:当style属性的计算逻辑比较复杂时,可以使用计算属性来动态绑定style属性。
- 优点:代码可读性好,逻辑清晰。
- 缺点:需要定义额外的计算属性。
-
使用动态绑定的class和style属性,通过在模板中使用数组和对象语法来动态生成class和style字符串:
- 使用场景:当class和style属性需要根据多个条件动态变化时,可以使用数组和对象语法来动态绑定class和style属性。
- 优点:可以根据多个条件动态修改class和style。
- 缺点:语法相对复杂,可读性较差。
具体实现
在Uniapp和Vue中,可以使用以下9种方法来动态添加绑定style和class:
- 使用
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>
- 使用
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>
- 使用计算属性来动态生成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>
- 使用动态绑定的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>
- 使用数组语法来动态绑定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>
- 使用动态绑定的style属性,通过在模板中使用对象语法来动态生成style字符串。
<template><div :style="{ color: textColor, fontSize: fontSize + 'px' }">Hello World</div>
</template><script>
export default {data() {return {textColor: 'red',fontSize: 16}}
}
</script>
- 使用对象语法动态绑定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>
- 使用计算属性动态绑定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>
- 使用动态绑定的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>
相关文章:
vue、uniapp中动态添加绑定style、class 9种方法实现
9种方法介绍 直接使用静态class和style属性: 使用场景:当class和style属性是固定不变的时候,可以直接在模板中写死。优点:简单直接,没有额外的计算和逻辑。缺点:无法根据条件动态修改class和style。 使用v…...
【CicadaPlayer】seek :SeekInCache(int64_t pos)的实现
SuperMediaPlayer::SeekInCache(int64_t pos) 的实现 seek的pos就是pts值。缓冲是list,那么插入的包是按照到达的顺序插入到list的,也就是无排序的。包的pts 正常应该单调连续,即使不单调连续,缓存也不在意。seek的操作主要是先比较pos与mCurrentPos ,pos 比 mCurrentPos …...
【C/C++】x -x 的含义
1、含义 -x 的值,其实就是在x的值的基础上进行按位取反(~x)之后在增加1所得(C语言中,-x实现是用取反1实现)也就是说:x & -x x & (~x 1) 2、x 为偶数 当一个奇数 1时,表示…...

[ZenTao]源码阅读:加载自定义任务类型
www/index.php config/config.php framework/base/router.class.php tmp/model/common.php module/common/model.php framework/router.class.php...
hive分区表 静态分区和动态分区
一、静态分区 现有数据文件 data_file 如下: 2023-08-01,Product A,100.0 2023-08-05,Product B,150.0 2023-08-10,Product A,200.0 1、创建分区表 CREATE TABLE sales (sale_date STRING,product STRING,amount DOUBLE ) PARTITIONED BY (sale_year INT, sale_mon…...

java八股文面试[多线程]——ThreadLocal底层原理和使用场景
源码分析: ThreadLocal中定义了ThreadLocalMap静态内部类,该内部类中又定义了Entry内部类。 ThreadLocalMap定了 Entry数组。 Set方法: Get方法: Thread中定义了两个ThreaLocalMap成员变量: Spring使用ThreadLocal解…...
Android hid发送apdu格式数据
在 Android 中,如果你想通过 HID(Human Interface Device)发送 APDU 格式的数据,通常会涉及 USB HID 设备或蓝牙 HID 设备。HID 协议通常用于键盘、鼠标和其他输入设备,而不是直接与智能卡进行通信。然而,如…...

Unity碰撞检测(3D和2D)
Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…...

android:控件TextView
一、系统学习Android控制键TextView,我的笔记里面有尝试学着使用自定义控件。 二、具体内容 1.如果在代码中给textView赋值,在xml中也给textView赋值了最后运行出来的结果显示代码中赋的值。因此得出结论,代码中的赋值会覆盖xml所附的值。 …...

3D风速仪 Gill Instruments Limited_R3-50 R3-100 and R3A -100 Manual
R3测量超声波脉冲从上部换能器到相反的下部换能器所花费的时间,并将其与脉冲从下部换能器到上部换能器的时间进行比较。 同样,在其他上下换能器之间比较时间。 如图1所示,每对换能器之间沿轴的空气速度可以从每条轴上的飞行次数计算出来。 …...

深度学习怎么学?
推荐这本小白看的《深度学习:从基础到实践(上下册)》。 深度学习:从基础到实践(上下册) 深入浅出的讲述了深度学习的基本概念与理论知识,不涉及复杂的数学内容,零基础小白也能轻松掌…...
WPF 数据验证
WPF提供了能与数据绑定系统紧密协作的验证功能。提供了两种方法用于捕获非法值: 1、可在数据对象中引发错误。 可以在设置属性时抛出异常,通常WPF会忽略所有在设置属性时抛出的异常,但可以进行配置,从而显示更有帮助的可视化指示…...

IDEA的maven想显示层级关系,而非平级
新版和旧版的IDEA的位置不一样,2023.2.1的版本在右上角的“” 这个位置 如图所示: 然后点击按模块分组:...
(八)k8s实战-身份认证与权限
一、认证 User AccountsService Accounts Service Account 自动化: Service Account Admission ControllerToken ControllerService Account Controller 1、Service Account Admission Controller 通过 Admission Controller 插件来实现对 pod 修改,…...
数学建模:TOPSIS分析
🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 TOPSIS分析法 算法流程 假设有m个评价对象,n个评价指标,首先需要进行指标的正向化: 极大型极小型单点型区间型 然后对正向化后的矩阵进行标准化,得到 Z Z Z…...

【Qt学习】10 利用QSharedMemory实现单例运行
问题 让应用程序只有一个运行实例 QSharedMemory除了可以完成进程间通信,还可以实现应用程序单例化。 解法 首先,看看QSharedMemory的几个函数: 1、QSharedMemory(const QString &key, QObject *parent Q_NULLPTR)构造函数 该构造函数…...

FPGA应用于图像处理
FPGA应用于图像处理 FPGA(Field-Programmable Gate Array)直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件,具有高度的灵活性,可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…...
vscode python 无法引入上层目录解决
在vscode 中.vscode 配置如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurati…...
[开发|java] java list 取某个属性最大的项
示例代码: import java.util.*;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public int getAge() {return age;} }public class Main {public static void main(String[] args) {List<Person…...

关闭浏览器的跨域校验
首发博客地址 问题描述 当你访问资源失败,并遇到以下类似提示时: Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...