Vue3 学习笔记(八)Vue3 语法-Class 与 Style绑定详解

news/2024/10/29 19:12:19/

在这里插入图片描述


在 Vue.js 中,动态地绑定 CSS 类和样式是一项常见的需求。Vue 提供了几种不同的方法来实现这一点,包括对象语法、数组语法和组件的作用域插槽。


以下是这些方法的详细说明:

一、Class 绑定


1、对象语法

对象语法允许根据表达式的真值动态地切换类。

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

在这个例子中,active 类将在 isActivetrue 时应用,text-danger 类将在 hasErrortrue 时应用。


2、数组语法

数组语法允许你根据数组中的值动态地应用多个类。

<script setup>
import { ref } from 'vue'const activeClass = ref('active');const errorClass = ref('');</script><template><div :class="[activeClass, errorClass]"></div>
</template>

在这个例子中,activeClass 将始终被应用,而 errorClass 只有在其值非空时才会被应用。


3、字符串语法

字符串语法允许你直接将静态类名绑定到元素上。

<script setup>
import { ref } from 'vue'const dynamicClass = ref('dynamic-active');</script><template><div class="static-class" :class="dynamicClass"></div>
</template>

4、使用计算属性进行 Class 绑定

<script setup>
import { ref,computed } from 'vue'const isActive = ref(true);
const hasError = ref(false);// 定义一个计算属性,它返回一个对象
const classObject = computed(() => {return {active: isActive.value,'text-danger': hasError.value};});</script><template><div :class="classObject"></div>
</template>

在这个例子中,classObject 是一个计算属性,它根据 isActivehasError 的值返回一个对象。这个对象中的键是类名,值是一个布尔表达式,决定了相应的类是否被应用。

解释
  • classObject 计算属性返回一个对象,其中包含两个属性:active'text-danger'
  • isActivetrue 时,active 类将被应用。
  • hasErrortrue 时,'text-danger' 类将被应用。
  • 由于 classObject 是一个计算属性,它的值会根据 isActivehasError 的变化自动更新,从而实现响应式的类绑定。

这种方法的优点是它使得类绑定的逻辑更加集中和可维护,特别是当你有多个条件需要根据复杂的逻辑来应用不同的类时。通过将这些逻辑封装在计算属性中,你可以保持模板的简洁和清晰。


二、Style 绑定


1、对象语法

对象语法允许根据表达式的真值动态地切换样式。

<script setup>
import { ref } from 'vue'const activeColor = ref('red');
const fontSize = ref(14);</script><template><div :style="{ color: activeColor, fontSize: fontSize + 'px' }"><p> style </p></div></template>

在这个例子中,文本颜色将始终是红色,字体大小将根据 fontSize 的值动态变化。

效果如下:

在这里插入图片描述


<script setup>
import { ref } from 'vue'const activeColor = ref('red');
const fontSize = ref(36);</script><template><div :style="{ color: activeColor, fontSize: fontSize + 'px' }"><p> style </p></div></template> 

修改fontSize 字体大小后, 效果如下:

在这里插入图片描述



2、数组语法

数组语法允许你根据数组中的值动态地应用多个样式。

<script setup>
import { ref } from 'vue'const baseStyles = ref({color: 'blue',fontSize: '12px'});const overridingStyles = ref({color: ''});</script><template><div :style="[baseStyles, overridingStyles]"><h1> ces 	</h1></div>
</template>

在这个例子中,baseStyles 将始终被应用,而 overridingStyles 将在其值非空时覆盖 baseStyles 中的样式。

在这里插入图片描述



<script setup>
import { ref } from 'vue'const baseStyles = ref({color: 'blue',fontSize: '12px'});const overridingStyles = ref({color: 'red'});</script><template><div :style="[baseStyles, overridingStyles]"><h1> ces 	</h1></div>
</template>

调整 overridingStyles 为非空值时的效果:


在这里插入图片描述

注意事项
  • 当使用数组语法时,确保数组中的每个样式对象都返回一个样式对象,而不是一个数组。

http://www.ppmy.cn/news/1542896.html

相关文章

什么,NGINX无法正向代理HTTPS?

需求 内网的机器无法访问互联网&#xff0c;但是有些业务服务必须要上网&#xff0c;这个时候就需要一个正向代理&#xff0c;将正向代理部署在一台可以上网的机器&#xff0c;业务应用通过正向代理去访问互联网&#xff0c;同时使用正向代理控制上网策略和权限。 什么是正向…

手写数据库连接池---C++11(上)

总览 项目背景 为了提高MySQL数据库&#xff08;基于C/S设计&#xff09;的访问瓶颈&#xff0c;除了在服务器端增加缓存服务器缓存常用的数据之外&#xff08;例如redis&#xff09;&#xff0c;还可以增加连接池&#xff0c;来提高MySQL Server的访问效率&#xff0c;在高并…

字节青训-查找热点数据问题

问题描述 给你一个整数数组 nums 和一个整数 k&#xff0c;请你返回其中出现频率前 k 高的元素。请按升序排列。 1 < nums.length < 10^5k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一&#xff0c;换句话说&#xff0c;数组中前 k 个高频元素的集合…

高级java每日一道面试题-2024年10月22日-JVM篇-JVM堆栈概念,何时销毁对象?

如果有遗漏,评论区告诉我进行补充 面试官: JVM堆栈概念,何时销毁对象? 我回答: JVM堆栈概念 栈&#xff08;Stack&#xff09;&#xff1a; 定义&#xff1a;栈是Java虚拟机为每个线程分配的内存区域&#xff0c;用于存储线程执行时的局部变量、操作数栈、动态链接和方法返…

Uefi Application小游戏开发之猜箱子

小游戏之猜箱子 选择箱子个数 &#xff0c;交换次数 &#xff0c;交换速度等&#xff0c;将球丢入到一个箱子中&#xff0c;然后开始随机交换箱子&#xff0c;猜出球的位置 源代码如下&#xff1a; #include <Uefi.h> #include <Library/UefiLib.h> #include &…

pip 和 pipx 的主要区别?

特性pippipx用途用于安装Python库或命令行应用程序&#xff0c;可以安装带entry points的库专门用于安装和管理Python命令行工具&#xff0c;每个工具都在隔离的虚拟环境中运行虚拟环境不自动创建虚拟环境&#xff0c;需要手动使用 venv 或 virtualenv 创建自动为每个安装的工具…

PHP免杀详细讲解PHP免杀详细讲解

基础学习 可变参数 $_GET $_POST $_COOKIE $_REQUEST $_SERVER 其中的某些参数可控,如REQUESTMETHOD,QUERYSTRING,HTTPUSERAGENT等 session_id() 这个比较特殊,但是依然可以利用 $_FILE $GLOBALS getallheaders() get_defined_vars() get_defined_functions() fil…

无人机动态窗口路径规划算法!

一、算法原理 DWA算法将局部路径规划问题描述为速度矢量空间上的约束优化问题。它根据无人机的当前状态&#xff08;如位置、速度、加速度等&#xff09;和环境信息&#xff08;如障碍物位置、目标点位置等&#xff09;&#xff0c;在速度空间内采样多组线速度和角速度&#x…