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

news2024/11/8 0:36:36

在这里插入图片描述


在 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.coloradmin.cn/o/2228721.html

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

相关文章

头歌——人工智能(机器学习 --- 决策树2)

文章目录 第5关&#xff1a;基尼系数代码 第6关&#xff1a;预剪枝与后剪枝代码 第7关&#xff1a;鸢尾花识别代码 第5关&#xff1a;基尼系数 基尼系数 在ID3算法中我们使用了信息增益来选择特征&#xff0c;信息增益大的优先选择。在C4.5算法中&#xff0c;采用了信息增益率…

WPF+Mvvm案例实战(五)- 自定义雷达图实现

文章目录 1、项目准备1、创建文件2、用户控件库 2、功能实现1、用户控件库1、控件样式实现2、数据模型实现 2、应用程序代码实现1.UI层代码实现2、数据后台代码实现3、主界面菜单添加1、后台按钮方法改造&#xff1a;2、按钮添加&#xff1a;3、依赖注入 3、运行效果4、源代码获…

【CSS】——基础入门常见操作

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;CSS引入 二&#xff1a;CSS对元素进行美化 1&#xff1a;style修饰 2&#xff1a;选…

Jmeter基础篇(19)JSR223预处理器

前言 JSR223预处理器是Apache JMeter中的一个组件&#xff0c;它允许用户使用任何支持Java Scripting API (JSR 223) 的脚本语言来执行预处理任务。这个功能非常强大&#xff0c;因为它让测试人员能够利用如Groovy、JavaScript&#xff08;Nashorn引擎&#xff09;、BeanShell…

Github 2024-10-24 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-10-24统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Solidity项目1Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:…

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书&#xff0c;今天分享下如何用Rust做电子书。制作电子书其实用途广泛&#xff0c;不仅可以用于技术文档&#xff08;对技术人来说非常方便&#xff09;&#xff0c;也可以制作用户手册、笔记、教程等&#xff0c;还可以应用于文学创作。 如果…

私有化视频平台EasyCVR视频汇聚平台接入RTMP协议推流为何无法播放?

私有化视频平台EasyCVR视频汇聚平台兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 有用户反馈&#xff0c;项目现场使用RTMP协议接入EasyCVR平台&#xff0c;但是视频却不…

51单片机应用开发(进阶)---外部中断(按键+数码管显示0-F)

实现目标 1、巩固数码管、外部中断知识 2、具体实现&#xff1a;按键K4&#xff08;INT1&#xff09;每按一次&#xff0c;数码管从0依次递增显示至F&#xff0c;再按则循环显示。 一、共阳数码管 1.1 共阳数码管结构 1.2 共阳数码管码表 共阳不带小数点0-F段码为&#xff…

【简道云 -注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

CSS 样式 box-sizing: border-box; 用于控制元素的盒模型如何计算宽度和高度

文章目录 box-sizing: border-box; 的含义默认盒模型 (content-box)border-box 盒模型 在微信小程序中的应用示例 在微信小程序中&#xff0c;CSS 样式 box-sizing: border-box; 用于控制元素的盒模型如何计算宽度和高度。具体来说&#xff0c; box-sizing: border-box; 会改…

设计模式基础概念(行为模式):责任链模式(Chain Of Responsibility)

概述 责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 该模式建议你将这些处理者连成一条链。 链上的每个处理者都有一个成员变量来保存对于…

从入门到了解C++系列-----类与对象(中)

首言 这是我对于在学习类与对象时的一些思考与总结。主要去讲解C自主实现的默认构造函数。 1. 6大默认成员函数 1.1 是什么 默认的成员函数&#xff0c;是由c 编译器自动生成的。我们即使不定义&#xff0c;也可以调用。有默认构造函数、默认拷贝构造函数、默认析构函数、赋值重…

快速生成高质量提示词,Image to Prompt 更高效

抖知书老师推荐&#xff1a; 随着 AI 技术的不断发展&#xff0c;视觉信息与语言信息之间的转换变得越来越便捷。在如今的数字化生活中&#xff0c;图像与文字的交互需求愈发旺盛&#xff0c;很多人都希望能轻松将图像内容直接转化为文本描述。今天我们来推荐一款实用的 AI 工…

SCSI驱动与 UFS 驱动交互概况

SCSI子系统概况 SCSI&#xff08;Small Computer System Interface&#xff09;子系统是 Linux 中的一个模块化框架&#xff0c;用于提供与存储设备的通用接口。通过 SCSI 子系统&#xff0c;可以支持不同类型的存储协议&#xff08;如 UFS、SATA、SAS&#xff09;&#xff0c…

5. 数据库连接池实现

WebServer 类中的 sql_pool() 方法&#xff0c;用于初始化数据库连接池并设置用户数据。 void WebServer::sql_pool() {/* 初始化数据库连接池 */m_connPool connection_pool::GetInstance();m_connPool->init("localhost", m_user, m_passWord, m_databaseName,…

Unity BesHttp插件修改Error log的格式

实现代码 找到插件的 UnityOutput.cs 然后按照需求替换为下面的代码即可。如果提示 void ILogOutput.Flush() { } 接口不存在&#xff0c;删除这行代码即可。 using Best.HTTP.JSON.LitJson; using System; using System.Collections.Generic; using UnityEngine; using Syst…

Kubernetes实战——DevOps集成SpringBoot项目

目录 一、安装Gitlab 1、安装并配置Gitlab 1.1 、下载安装包 1.2、安装 1.3、修改配置文件 1.4、更新配置并重启 2、配置 2.1、修改密码 2.2、禁用注册功能 2.3、取消头像 2.4、修改中文配置 2.5、配置 webhook 3、卸载 二、安装镜像私服Harbor 1、下载安装包 2、…

【移动应用开发】访问网络

目录 一、运行截图 二、源代码 1. WebView的简单使用 ① activity_main.xml ② MainActivity.kt ③ AndroidManifest.xml 2. 使用OkHttp访问以下接口&#xff0c;获取Aspirin化合物的JSON格式数据 ① activity_okhttp.xml ② OKhttpActivity ③ 导入依赖 3. 使用GSO…

软件工程--需求分析与用例模型

面向对象分析(ObjectOrientedAnalysis&#xff0c;简称OOA) 分析和理解问题域&#xff0c;找出描述问题域所需的类和对象&#xff0c;分析它们的内部构成和外部关系&#xff0c;建立独立于实现的OOA模型&#xff0c;暂时忽略与系统实现有关的问题。 主要使用UML中的以下几种图…

Android中同步屏障(Sync Barrier)介绍

在 Android 中&#xff0c;“同步屏障”&#xff08;Sync Barrier&#xff09;是 MessageQueue 中的一种机制&#xff0c;允许系统临时忽略同步消息&#xff0c;以便优先处理异步消息。这在需要快速响应的任务&#xff08;如触摸事件和动画更新&#xff09;中尤为重要。 在 An…