【前端】【面试】vue动态样式总结

在 Vue 中,动态样式的设置是一个常见需求,可通过多种方式实现,以下是对这些方式的详细总结:

1. 绑定 class 属性

对象语法

可以给 :class 绑定一个对象,以动态地切换类名。对象的键是类名,值是一个布尔值,决定是否应用该类名。

<template><div :class="{ active: isActive, 'text-danger': hasError }">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const isActive = ref(true);
const hasError = ref(false);
</script>

上述代码中,active 类会被应用,因为 isActivetruetext-danger 类不会被应用,因为 hasErrorfalse

数组语法

可以给 :class 绑定一个数组,数组中的元素可以是字符串或对象。

<template><div :class="[activeClass, errorClass]">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const activeClass = ref('active');
const errorClass = ref('text-danger');
</script>

这里 activetext-danger 类都会被应用。

与普通 class 共存

class 属性和 :class 动态绑定可以同时使用。

<template><div class="static" :class="{ active: isActive }">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const isActive = ref(true);
</script>

元素会同时拥有 staticactive 类。

2. 绑定 style 属性

对象语法

:style 可以绑定一个 JavaScript 对象,对象的键是 CSS 属性名,值是对应的值。

<template><div :style="{ color: activeColor, fontSize: fontSize + 'px' }">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const activeColor = ref('red');
const fontSize = ref(16);
</script>

上述代码中,元素的文本颜色会是红色,字体大小为 16px。

数组语法

:style 也可以绑定一个数组,数组中的元素是对象,这样可以应用多个样式对象。

<template><div :style="[baseStyles, overridingStyles]">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const baseStyles = ref({color: 'red',fontSize: '16px'
});
const overridingStyles = ref({fontWeight: 'bold'
});
</script>

元素会同时应用 baseStylesoverridingStyles 中的样式。

3. 计算属性和方法

计算属性

可以使用计算属性来返回动态的 classstyle 对象,使代码更清晰和可维护。

<template><div :class="computedClass">动态样式示例</div>
</template><script setup>
import { ref, computed } from 'vue';const isActive = ref(true);
const hasError = ref(false);const computedClass = computed(() => ({active: isActive.value,'text-danger': hasError.value
}));
</script>
方法

也可以使用方法来返回动态的 classstyle 对象。

<template><div :class="getClass()">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const isActive = ref(true);
const hasError = ref(false);const getClass = () => ({active: isActive.value,'text-danger': hasError.value
});
</script>

4. 响应式状态驱动

结合 Vue 的响应式原理,当状态改变时,动态样式会自动更新。

<template><button @click="toggleActive">切换状态</button><div :class="{ active: isActive }">动态样式示例</div>
</template><script setup>
import { ref } from 'vue';const isActive = ref(false);const toggleActive = () => {isActive.value = !isActive.value;
};
</script>

点击按钮时,isActive 状态改变,元素的 active 类会相应地添加或移除。

5. 组件动态样式

在组件中,可以通过 $attrsinheritAttrs 选项来传递和应用动态样式。

<template><ChildComponent :class="{ active: isActive }" />
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';const isActive = ref(true);
</script><!-- ChildComponent.vue -->
<template><div v-bind="$attrs">子组件内容</div>
</template><script setup>
defineOptions({inheritAttrs: false
});
</script>

父组件传递的动态 class 会应用到子组件的根元素上。

综上所述,Vue 提供了多种灵活的方式来设置动态样式,开发者可以根据具体需求选择合适的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java--IO流详解 (上)--字符流

目录 IO流的概念 字符流 输入流 Reader核心方法 1.close() 2.mark(int readAheadLimit) 3.markSupported() 4.read() 5.read(char[] cbuf) 6.read(char[] cbuf, int off, int len) 7.read(CharBuffer target) 8.ready() 9.reset() 10.skip(long n) Reader 的常用…

物联网智能语音控制灯光系统设计与实现

背景 随着物联网技术的蓬勃发展&#xff0c;智能家居逐渐成为现代生活的一部分。在众多智能家居应用中&#xff0c;智能灯光控制系统尤为重要。通过语音控制和自动调节灯光&#xff0c;用户可以更便捷地操作家中的照明设备&#xff0c;提高生活的舒适度与便利性。本文将介绍一…

探讨使用ISVA代替“Open Liberty使用指南及微服务开发示例”中日志审计功能

在Open Liberty使用指南及开发示例&#xff08;四&#xff09;一文开始日志审计功能占有了一定的开发工作量&#xff0c;那么是否可以使用IBM Security Verify Access&#xff08;ISVA&#xff09;代替以节省开发工作&#xff1f;如果可行&#xff0c;那么以后各类应用的日志审…

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…

Java ArrayList(单列集合)

ArrayList 是 Java 中最常用的一个集合类&#xff0c;它属于 java.util 包。ArrayList 实现了 List 接口&#xff0c;提供了动态数组的功能。与普通数组不同&#xff0c;ArrayList 在元素增删时会自动调整大小&#xff0c;因此它的大小是可变的。 1. ArrayList 的基本特性 动…

二次封装axios解决异步通信痛点

为了方便扩展,和增加配置的灵活性,这里将通过封装一个类来实现axios的二次封装,要实现的功能包括: 为请求传入自定义的配置,控制单次请求的不同行为在响应拦截器中对业务逻辑进行处理,根据业务约定的成功数据结构,返回业务数据对响应错误进行处理,配置显示对话框或消息形…

TOML介绍

0 Preface/Foreword TOML&#xff0c;一种配置文件格式。Toms Obvious Minimal Language. 1 介绍 TOML: Toms Obvious Minimal Language&#xff0c;“显而易见的最小化语言 ” JSON&#xff1a;不支持注释 YAML&#xff1a;过于复杂

python 大数据的优势

在SD-WAN技术与企业网络的应用场景中&#xff0c;结合大数据分析&#xff0c;Python能发挥出独特优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; - **数据收集与整合**&#xff1a;在SD-WAN网络中&#xff0c;分布着众多设备和链路&#xff0c;会产生海量的网络…

Linux命名管道与共享内存

命名管道与共享内存 命名管道介绍和基本使用 理解了匿名管道后&#xff0c;命名管道的理解就会变得容易。在前面使用匿名管道时可以发现&#xff0c;之所以可以匿名是因为由父进程创建&#xff0c;子进程拷贝所以子进程和父进程都可以看到这个管道。但是如果对于任意两个进程…

TCP 端口号为何位于首部前四个字节?协议设计的智慧与启示

知乎的一个问题很有意思&#xff1a;“为什么在TCP首部中要把TCP的端口号放入最开始的四个字节&#xff1f;” 这种问题很适合我这种搞历史的人&#xff0c;大年初一我给出了一个简短的解释&#xff0c;但仔细探究这个问题&#xff0c;我们将会获得 TCP/IP 被定义的过程。 文…

查看引脚电平

在Linux系统中&#xff0c;通过cat命令查看/sys/class/gpio/export文件并不能直接获取GPIO引脚的高低电平。/sys/class/gpio/export文件用于向系统请求导出&#xff08;即启用&#xff09;某个特定的GPIO引脚&#xff0c;而不是用于读取引脚的状态。 1.导出GPIO引脚&#xff1…

luoguP8764 [蓝桥杯 2021 国 BC] 二进制问题

luogu题目传送门 题目描述 小蓝最近在学习二进制。他想知道 1 到 N 中有多少个数满足其二进制表示中恰好有 K 个 1。你能帮助他吗? 输入格式 输入一行包含两个整数 N 和 K。 输出格式 输出一个整数表示答案。 输入输出样例 输入 #1 7 2 输出 #1 3 说明/提示 对于…

qt的QSizePolicy的使用

使用 QSizePolicy 设置控件的伸缩因子 在 Qt 中&#xff0c;QSizePolicy 控制 控件如何在布局中伸缩。如果想要影响控件的大小调整行为&#xff0c;可以通过 QSizePolicy::setHorizontalStretch() 和 QSizePolicy::setVerticalStretch() 设置伸缩因子。 基本用法 假设我们有一个…

GLM库需要VS2013及以上

GLM库简介 GLM(OpenGL Mathematics)是一个C++数学库,它基于OpenGL Shading Language(GLSL)规范。 功能: 矩阵变换和四元数:GLM支持各种矩阵变换操作,包括平移、旋转和缩放。此外,它还提供了四元数支持,这对于处理3D旋转非常有用。 数据打包和随机数生成:除了基本…

八.springboot集成mybatis+druid数据库连接池

文章目录 前言一、添加必要依赖二、添加application-dev.yml配置三、添加mybatisdruid配置三、添加mybatis-config.xml四、测试使用1.在TestController中添加一个testMybatis2.在TestService中添加对应接口3.实现TestService4.最终项目结构5.测试接口 五、Druid监控功能总结 前…

FreeRTOS 知识点总结(一):基础概念与核心特性

FreeRTOS 是一款广泛应用于嵌入式领域的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;以其轻量级、开源性、高可裁剪性等特点&#xff0c;成为许多嵌入式开发项目的首选。本文将从基础概念、核心特性、任务管理等方面对 FreeRTOS 进行总结&#xff0c;帮助初学者快速入…

一文了解zookeeper

1.ZooKeeper是什么 简单来说&#xff0c;她是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务 具体来说&#xff0c;他可以做如下事情&#xff1a; 分布式配置管理&#xff1a;ZooKeeper可以存储配置信息&#xff0c;应用程序可以动态读取配置信息。分布式同步&a…

游戏引擎学习第100天

仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天&#xff0c;我们开始了反射和环境贴图的工作&#xff0c;成功地根据法线显示了反射效果。然而&#xff0c;我们还没有实现反射向量的计算&#xff0c;导致反射交点的代…

MYSQL的管理备份

一、系统数据库 mysql数据库安装完成后,自带了四个数据库,具体作用如下: mysql:存储MySQL服务器正常运行所需的各种信息(时区、主从、用户、权限等); information_schema:提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等; performanc…

【时时三省】(C语言基础)简单的算法举例

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 判定2000—2500年中的每一年是否为闰年&#xff0c;并将结果输出。 本先分析闰年的条件&#xff1a; &#xff08;1&#xff09;能被4整除&#xff0c;但不能被100整除的年份都是闰年&…