当前位置: 首页 > news >正文

Vue——类与样式绑定

目录

Class 与 Style 绑定​

绑定 HTML class​

绑定对象​

绑定数组​

在组件上使用​

绑定内联样式​

绑定对象​

绑定数组​

自动前缀​

样式多值​


Class 与 Style 绑定​

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 style 都是 attribute,我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易出错的。因此,Vue 专门    为 class 和 style 的 v-bind 用法提供了特殊的功能增强。除了字符串外,表达式的值也可以是对象或数组。

绑定 HTML class​

绑定对象​

我们可以给 :class (v-bind:class 的缩写) 传递一个对象来动态切换 class:

<div :class="{ active: isActive }"></div>

上面的语法表示 active 是否存在取决于数据属性 isActive 的真假值。

你可以在对象中写多个字段来操作多个 class。此外,:class 指令也可以和一般的 class attribute 共存。举例来说,下面这样的状态:

data() {return {isActive: true,hasError: false}
}

配合以下模板:    

<divclass="static":class="{ active: isActive, 'text-danger': hasError }"
></div>

 渲染的结果会是:

<div class="static active"></div>

当 isActive 或者 hasError 改变时,class 列表会随之更新。举例来说,如果 hasError 变为 true,class 列表也会变成 "static active text-danger"

绑定的对象并不一定需要写成内联字面量的形式,也可以直接绑定一个对象:

data() {return {classObject: {active: true,'text-danger': false}}
}
<div :class="classObject"></div>

这也会渲染出相同的结果。我们也可以绑定一个返回对象的计算属性。这是一个常见且很有用的技巧:

data() {return {isActive: true,error: null}
},
computed: {classObject() {return {active: this.isActive && !this.error,'text-danger': this.error && this.error.type === 'fatal'}}
}
<div :class="classObject"></div>

绑定数组​

我们可以给 :class 绑定一个数组来渲染多个 CSS class: 

data() {return {activeClass: 'active',errorClass: 'text-danger'}
}
<div :class="[activeClass, errorClass]"></div>

渲染的结果是: 

<div class="active text-danger"></div>

如果你也想在数组中有条件地渲染某个 class,你可以使用三元表达式:

<div :class="[isActive ? activeClass : '', errorClass]"></div>

errorClass 会一直存在,但 activeClass 只会在 isActive 为真时才存在。

然而,这可能在有多个依赖条件的 class 时会有些冗长。因此也可以在数组中嵌套对象: 

<div :class="[{ active: isActive }, errorClass]"></div>

在组件上使用​

本节假设你已经有 Vue组件 的知识基础。如果没有,你也可以暂时跳过,以后再阅读。

对于只有一个根元素的组件,当你使用了 class attribute 时,这些 class 会被添加到根元素上,并与该元素上已有的 class 合并。

举例来说,如果你声明了一个组件名叫 MyComponent,模板如下:

<!-- 子组件模板 -->
<p class="foo bar">Hi!</p>

在使用时添加一些 class:

<!-- 在使用组件时 -->
<MyComponent class="baz boo" />

渲染出的 HTML 为:

<p class="foo bar baz boo">Hi!</p>

Class 的绑定也是同样的:

<MyComponent :class="{ active: isActive }" />

当 isActive 为真时,被渲染的 HTML 会是:

<p class="foo bar active">Hi!</p>

如果你的组件有多个根元素,你将需要指定哪个根元素来接收这个 class。你可以通过组件的 $attrs 属性来实现指定:

<!-- MyComponent 模板使用 $attrs 时 -->
<p :class="$attrs.class">Hi!</p>
<span>This is a child component</span>
<MyComponent class="baz" />

这将被渲染为:

<p class="baz">Hi!</p>
<span>This is a child component</span>

你可以在透传Attribute一章中了解更多组件的 attribute 继承的细节。

绑定内联样式​

绑定对象​

:style 支持绑定 JavaScript 对象值,对应的是 HTML 元素的 style 属性:

data() {return {activeColor: 'red',fontSize: 30}
}
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

尽管推荐使用 camelCase,但 :style 也支持 kebab-cased 形式的 CSS 属性 key (对应其 CSS 中的实际名称),例如:

<div :style="{ 'font-size': fontSize + 'px' }"></div>

直接绑定一个样式对象通常是一个好主意,这样可以使模板更加简洁:

data() {return {styleObject: {color: 'red',fontSize: '13px'}}
}
<div :style="styleObject"></div>

同样的,如果样式对象需要更复杂的逻辑,也可以使用返回样式对象的计算属性。

绑定数组​

我们还可以给 :style 绑定一个包含多个样式对象的数组。这些对象会被合并后渲染到同一元素上:

<div :style="[baseStyles, overridingStyles]"></div>

自动前缀​

当你在 :style 中使用了需要浏览器特殊前缀的 CSS 属性时,Vue 会自动为他们加上相应的前缀。Vue 是在运行时检查该属性是否支持在当前浏览器中使用。如果浏览器不支持某个属性,那么将尝试加上各个浏览器特殊前缀,以找到哪一个是被支持的。

样式多值​

你可以对一个样式属性提供多个 (不同前缀的) 值,举例来说:

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

数组仅会渲染浏览器支持的最后一个值。在这个示例中,在支持不需要特别前缀的浏览器中都会渲染为 display: flex

相关文章:

Vue——类与样式绑定

目录 Class 与 Style 绑定​ 绑定 HTML class​ 绑定对象​ 绑定数组​ 在组件上使用​ 绑定内联样式​ 绑定对象​ 绑定数组​ 自动前缀​ 样式多值​ Class 与 Style 绑定​ 数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 styl…...

软考中项计算题总结

计算题在下午的考试属于重中之重&#xff0c;可以说得计算题得天下&#xff0c;先把计算题搞定&#xff0c;再看案例找错题&#xff0c;这2个是最容易得分的&#xff0c;所以对于进度、成本类的计算题一定要搞懂&#xff1a; 所属项目过程计算计算公式说明进度管理三点估算&am…...

如何使用基于GPT-4的Cursor编辑器提升开发效率

程序员最恨两件事情&#xff1a;一是别人代码不写文档&#xff0c;二是要让自己写文档。随着 GPT-4 的到来这些都不是问题了&#xff0c;顺带可能连程序员都解决了。。。 之前一直觉得 AI 生成的代码也就写个面试题的水平&#xff0c;小打小闹&#xff0c;现在时代可变了。Curs…...

压箱底教程分享,手把手教会你如何注册target账号和下单

喜欢套利的朋友肯定都认识target这个平台吧&#xff0c;它是美国热门的综合性海淘网站之一。东哥近日收到私信有朋友向我请教在注册target账号时遇到的一些问题&#xff0c;所以今天东哥想跟大家分享的就是就是target账号注册教程和下单流程&#xff0c;让也想注册target账号的…...

一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别!

相信学习音乐制作的同学在混音阶段经常会碰到各种关于声音的单位&#xff0c;其中最具代表性的可能就是分贝家族的单位了&#xff0c;如dBSPL、dBm、dBu、dBV、dBFS等。 那么&#xff0c;这些单位分别表示什么&#xff0c;又有什么区别呢&#xff1f; 描述声音信号强弱的单位…...

漂亮实用的15个脑图模板,你知道哪些是AI做的吗?

对于很多第一次接触到思维导图的朋友&#xff0c;看到软件的时候往往找不到方向&#xff0c;不知道如何创作&#xff1f; 今天大家的好助手来了。 一是有大量的思维导图模板&#xff0c;大家看着模板做&#xff0c;慢慢就会做了。 二是ProcessOn 思维导图已经可以用AI 做思维…...

历代程序员都无法逃脱的诅咒 -- 低代码

1764年5月4日星期四 愤怒的纺织工人 纵火烧毁了哈格里夫斯的家 因为他发明的珍妮纺织机 让很多当地的手工纺织工人失业了 这也被认为是第一次工业革命的开端 由于事发的星期四 所以这一事件也被称作疯狂星期四 类似的变革 也一次次的出现在软件行业 他是历代程序员都无法逃脱的…...

14Exceptional Control Flow Exceptions and Process(异常控制流,异常和进程)

异常控制流 异常控制流出现的地方&#xff1a; 异常控制流&#xff08;Exceptional Control Flow&#xff0c;ECF&#xff09;是程序执行过程中由于某些特殊事件或条件而导致的控制流的改变。异常控制流通常出现在以下几种情况&#xff1a; 硬件异常和中断&#xff1a;硬件异…...

LeetCode - 两数之和

题目信息 源地址&#xff1a;两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不…...

Python 小型项目大全 31~35

三十一、猜数字 原文&#xff1a;http://inventwithpython.com/bigbookpython/project31.html 猜数字是初学者练习基本编程技术的经典游戏。在这个游戏中&#xff0c;电脑会想到一个介于 1 到 100 之间的随机数。玩家有 10 次机会猜出数字。每次猜中后&#xff0c;电脑会告诉玩…...

他又赚了一万美金

有一些学员真的挺能干的&#xff0c;收了一万刀&#xff0c;感到欣慰&#xff0c;毕竟在国外lead这条路&#xff0c;有很多人被骗&#xff0c;也有很多人赚钱。 但是大部分人跟着某一些所谓的大佬&#xff0c;最后自己却不动手操作。 ​ 从一开始怕跟我学习&#xff0c;到最后选…...

企业工程项目管理系统+spring cloud 系统管理+java 系统设置+二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

教你使用Apache搭建Http

Apache2默认采用的是80端口号&#xff0c;因此直接通过公网ip或域名就能访问。现实中&#xff0c;很多服务器本身就部署了许多其它服务&#xff0c;80端口号往往被占用&#xff0c;因此就需要将Apache2改成其它访问端口。 修改端口&#xff0c;首先需要修改/etc/apache2/ports…...

ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示

文章目录一、集群环境准备二、搭建 ZooKeeper 集群和配置三、搭建 Kafka 集群对接zk四、搭建 ES 集群和配置五、部署 Logstash 消费 Kafka数据写入至ES六、部署 Filebeat 收集日志七、安装 Kibana 展示日志信息一、集群环境准备 1.1 因为资源原因这里我就暂时先一台机器部署多…...

数据结构初阶 - 总结

-0- 数据结构前言 什么是数据结构 什么是算法 数据结构和算法的重要性-1- 时间复杂度和空间复杂度 &#x1f449;数据结构 -1- 时间复杂度和空间复杂度 | C 算法效率 时间复杂度大O的渐进表示法eg 空间复杂度 常见复杂度对比OJ 消失的数组 轮转数组-2- 顺序表 与 链表 &am…...

代码随想录算法训练营第四十四天-动态规划6|518. 零钱兑换 II ,377. 组合总和 Ⅳ (遍历顺序决定是排列还是组合)

如果求组合数就是外层for循环遍历物品&#xff0c;内层for遍历背包。 如果求排列数就是外层for遍历背包&#xff0c;内层for循环遍历物品。 求物品可以重复使用时&#xff0c;最好是用一维数组&#xff0c;会比较方便。二维数组不想思考了&#xff0c;二维还是用在01背吧吧。…...

wma格式怎么转换mp3,4种方法超快学

其实我们在任何电子设备上所获取的音频文件都具有自己的格式&#xff0c;每种格式又对应着自己的属性特点。比如wma就是一种音质优于MP3的音频格式&#xff0c;虽然很多小伙伴比较青睐于wma所具有的音质效果&#xff0c;但也不得不去考虑因wma自身兼容性而引起很多播放器不能支…...

【数据结构与算法】判定给定的字符向量是否为回文算法

题目&#xff1a; Qestion: 试写一个算法判定给定的字符向量是否为回文。   回文解释: 回文是指正读反读均相同的字符序列&#xff0c;如“abba”和“abdba”均是回文&#xff0c;但“good”不是回文。 主要思路&#xff1a; 因为数据要求不是很严格并且是一个比较简单的…...

考研数二第十七讲 反常积分与反常积分之欧拉-泊松(Euler-Poisson)积分

反常积分 反常积分又叫广义积分&#xff0c;是对普通定积分的推广&#xff0c;指含有无穷上限/下限&#xff0c;或者被积函数含有瑕点的积分&#xff0c;前者称为无穷限广义积分&#xff0c;后者称为瑕积分&#xff08;又称无界函数的反常积分&#xff09;。 含有无穷上限/下…...

【论文总结】理解和减轻IoT消息协议的安全风险

理解和减轻IoT消息协议的安全风险介绍概述前置知识威胁模型MQTT IoT通信安全分析未授权的MQTT消息未授权的Will消息未经授权的保留消息MQTT会话管理故障未更新的会话订阅状态未更新的会话生命周期状态未经身份验证的 MQTT 身份客户端id劫持MQTT Topics的授权MQTT Topic不安全的…...

AI异步任务编排引擎:从原理到实战,构建可靠工作流系统

1. 项目概述&#xff1a;AI驱动的异步任务编排引擎在当今的软件开发领域&#xff0c;尤其是涉及数据处理、机器学习模型训练、自动化工作流等场景时&#xff0c;我们常常会面临一个核心挑战&#xff1a;如何高效、可靠地编排和管理一系列耗时且可能相互依赖的异步任务。传统的解…...

py每日spider案例之某website之xin东方选课搜索接口(难度一般 扣取代码即可)

加密位置: 逆向接口参数: 逆向接口: const g = globalThis; g.window = g; g.self = g; g.location = {<...

突破性开源Switch模拟器Ryujinx:零基础实现PC端任天堂游戏全兼容

突破性开源Switch模拟器Ryujinx&#xff1a;零基础实现PC端任天堂游戏全兼容 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验《塞尔达传说&#xff1a;旷野之息》的冒险…...

编写程序统计婚恋交友消费,相处长处度数据,分析理性婚恋模式,减少年轻人恋爱高频无谓消费。

构建一个婚恋交友消费与相处时长统计分析、理性婚恋模式识别的商务智能示例项目&#xff0c;去营销化、中立化&#xff0c;仅用于学习与工程实践参考。一、实际应用场景描述在当代年轻人的婚恋与社交生活中&#xff0c;存在一种普遍现象&#xff1a;- 约会高度依赖“消费型场景…...

demo-magic常见问题解决:pv工具安装和终端兼容性完全指南

demo-magic常见问题解决&#xff1a;pv工具安装和终端兼容性完全指南 【免费下载链接】demo-magic A handy shell script that enables you to write repeatable demos in a bash environment. 项目地址: https://gitcode.com/gh_mirrors/de/demo-magic demo-magic是一个…...

048路径总和III

路径总和 III 题目链接&#xff1a;https://leetcode.cn/problems/path-sum-iii/description/?envTypestudy-plan-v2&envIdtop-100-liked 我的解答&#xff1a; Map<Long,Integer> map new HashMap<>();//key:前缀和 value&#xff1a;前缀和的个数 publ…...

如何用DS4Windows让PS4手柄在PC上完美运行?3步解锁专业游戏体验

如何用DS4Windows让PS4手柄在PC上完美运行&#xff1f;3步解锁专业游戏体验 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否曾经想过在PC上使用心爱的PS4手柄玩游戏&#xff0c;却发…...

FreeRTOS任务通知:轻量级任务通信机制详解与实战应用

1. 项目概述&#xff1a;为什么你需要关注FreeRTOS任务通知&#xff1f;在嵌入式实时操作系统&#xff08;RTOS&#xff09;的开发中&#xff0c;任务间的通信与同步是核心课题。如果你用过FreeRTOS&#xff0c;肯定对队列、信号量、事件组这些通信机制不陌生。它们功能强大&am…...

OpenWrt嵌入式Linux开发入门:从编译到部署的完整实践指南

1. 项目概述&#xff1a;为什么选择OpenWrt作为嵌入式开发的起点 如果你对Linux系统有一定了解&#xff0c;并且想踏入嵌入式开发的大门&#xff0c;或者你是一个网络爱好者&#xff0c;想让家里的路由器“脱胎换骨”&#xff0c;那么OpenWrt绝对是一个绕不开的名字。它不是一…...

TSN网络仿真入门:除了OMNeT++,这几个开源框架(NeSTiNg/CoRE4INET)到底该怎么选?

TSN网络仿真框架深度选型指南&#xff1a;从OMNeT生态到实战避坑 引言&#xff1a;当TSN遇见仿真工具丛林 在工业自动化与车载网络领域&#xff0c;时间敏感网络(TSN)正成为实时通信的基础设施。但部署前的验证环节往往让研究者陷入两难——直接搭建物理测试床成本高昂&#xf…...