用 CSS color-mix() 解决背景透明度的痛点

在设计卡片组件时,经常遇到这样的需求:卡片背景需要80%透明度,鼠标悬浮在内部某项时,修改背景色但保持同样的透明度。

问题场景

.card {background: rgba(59, 130, 246, 0.8); /* 蓝色80%透明度 */
}.card-item:hover {/* 想要绿色背景,同样80%透明度 */background: rgba(34, 197, 94, 0.8);
}

看似简单,但当使用CSS变量时就会遇到问题。

常见的错误方案

方案1:使用 opacity(❌)

.card-item:hover {background: var(--green-color);opacity: 0.8; /* 整个元素变淡,包括文字 */
}

问题opacity 会影响整个元素,文字也会变淡,用户体验差。

方案2:使用 rgba with from(⚠️)

.card-item:hover {background: rgba(from var(--green-color) r g b / 0.8);
}

问题:只支持rgb格式的变量,如果 --green-color: #22c55e,这种写法会失效。

完美解决方案:color-mix()

.card-item:hover {background: color-mix(in srgb, var(--green-color) 80%, transparent);
}

实际应用

:root {--primary: #3b82f6;--success: #22c55e;--warning: #f59e0b;
}.card {background: color-mix(in srgb, var(--primary) 80%, transparent);padding: 1rem;
}.card-item {padding: 0.5rem;border-radius: 4px;transition: background 0.2s;
}.card-item:hover {background: color-mix(in srgb, var(--success) 80%, transparent);
}.card-item.warning:hover {background: color-mix(in srgb, var(--warning) 80%, transparent);
}

color-mix() 特点

  1. 兼容所有颜色格式:无论变量是 #fffrgb(255,255,255) 还是 hsl(0,0%,100%)
  2. 只影响背景:文字保持清晰,不会变淡
  3. 语义清晰:80% 主色 + 20% 透明 = 80% 透明度
  4. 易于维护:修改透明度只需改一个数值

浏览器兼容性

现代浏览器都支持,如需兼容旧版本:

.card-item:hover {background: rgba(34, 197, 94, 0.8); /* fallback */background: color-mix(in srgb, var(--success) 80%, transparent);
}

总结

当需要为CSS变量添加透明度时,color-mix() 是最佳选择。它解决了 opacity 影响整体元素和 rgba(from) 格式限制的问题,让背景透明度控制变得简单而优雅。

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

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

相关文章

【Python代码】谷歌专利CSV处理函数

以下是一个重构后的高可用、可配置、低耦合的专利CSV处理函数,包含清晰的注释和结构: import csv import pandas as pd from datetime import datetime import os from typing import List, Dict, Any, Optional, Tuple import logging# 配置日志 loggin…

3-2〔OSCP ◈ 研记〕❘ WEB应用攻击▸WEB安全防护体系

郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 …

PCIe 5.0相比顶级PCIe 4.0有何提升?

还在为PCIe 4.0固态硬盘那7000MB/s的速度沾沾自喜?醒醒,朋友。当很多人还在讨论PCIe 4.0是否“性能过剩”时,真正面向未来的PCIe 5.0已经带着碾压级的实力,来到了我们面前。这不是一次常规的“升级”,更不是英特尔式的…

23种设计模式——适配器模式(Adapter)​详解

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 设计模式 ✨特色专栏: 知识分享 &…

Vue3源码reactivity响应式篇之Reactive

概览 vue3中reactive用于将普通对象转换为响应式对象,它的实现原理是通过Proxy和Reflect来实现的。具体的实现文件参见packages\reactivity\src\reactive.ts。本文会介绍reactive的相关api如下: reactive:将普通对象转换为响应式对象readonly…

初识数据结构——Map和Set:哈希表与二叉搜索树的魔法对决

数据结构专栏 ⬅(click) 大家好!我是你们的老朋友——想不明白的过度思考者!今天我们要一起探索Java中两个神奇的数据结构:Map和Set!准备好了吗?让我们开始这场魔法之旅吧!🎩 🎯 先…

Unreal Engine UStaticMeshComponent

UnrealUnreal Engine - UStaticMeshComponent🏛 定义🏛 类继承⚡ 关键特性⚙️ 常见配置🛠️ 使用方法📚 在 C 中使用📚 在蓝图中使用🎮 典型应用场景📚 常见子类与用途📝 小结Unrea…

demo 汽车之家(渲染-筛选-排序-模块抽离数据)

效果图展示:代码截图注释详情实现笔记总体目标(按需求点对照代码)数据模块化、整体渲染框架、筛选/排序的高亮与行为,全部已在 Index.ets CarData.ets 落地。下面按图片需求 2~4 点逐条总结,并给出关键代码定位与“为…

双重机器学习DML介绍

本文参考: [1]文心一言回答; 一、核心原理与数学框架 双重机器学习(Double Machine Learning, DML)由Chernozhukov等学者于2018年提出,是一种结合机器学习与传统计量经济学的因果推断框架。其核心目标是在高维数据和非…

【图像算法 - 21】慧眼识虫:基于深度学习与OpenCV的农田害虫智能识别系统

摘要: 在现代农业生产中,病虫害是影响作物产量和品质的关键因素之一。传统的害虫识别依赖人工巡查,效率低、成本高且易出错。本文将介绍如何利用深度学习与OpenCV构建一套高效的农田害虫智能识别系统。该系统能够自动识别10类常见农业害虫&a…

循环神经网络实战:GRU 对比 LSTM 的中文情感分析(三)

循环神经网络实战:GRU 对比 LSTM 的中文情感分析(三) 文章目录循环神经网络实战:GRU 对比 LSTM 的中文情感分析(三)前言数据准备(与 LSTM 相同)模型搭建(GRU)…

学习游戏制作记录(制作提示框以及使用键盘切换UI)8.21

1.制作装备提示框创建提示框,添加文本子对象,用来描述名称,类型以及属性加成挂载垂直分配组件和文本大小适配组件,这样图像会根据文本大小来调整自己创建UI_ItemTip脚本并挂载在文本框上:[SerializeField] private Tex…

chapter07_初始化和销毁方法

一、简介 一个Bean,在进行实例化之后,需要进行两种初始化 初始化属性,由PropertyValues进行赋值初始化方法,由ApplicationContext统一调用,例如加载配置文件 Bean的初始化与销毁,共有三种方式(注…

open webui源码分析6-Function

一、Functions简介 可以把Tools作为依赖于外部服务的插件,Functions就是内部插件,二者都是用来增强open webui的能力的。Functions是轻量的,高度可定制的,并且是用纯Python编写的,所以你可以自由地创建任何东西——从新…

C2039 “unref“:不是“osgEarth::Symbology::Style”的成员 问题分析及解决方法

在osgEarth2.10中实现多线段连续测量功能时,遇到下图中的错误; 经过测试和验证,主要问题出现在下图圈出代码的定义上 图22-1 对于22-1中的两个变量这样定义是错误的。因为Style类没有继承自osg::Referenced,因此不能与osg::ref_ptr配合使用

GitHub 热榜项目 - 日榜(2025-08-19)

GitHub 热榜项目 - 日榜(2025-08-19) 生成于:2025-08-19 统计摘要 共发现热门项目:12 个 榜单类型:日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术热点:1)AI原生开发持续爆发,Archon OS、Parlant等…

ingress 配置ssl证书

模拟环境举例&#xff1a; # 生成带 OU 的证书配置文件 cat > csr.conf <<EOF [ req ] default_bits 2048 prompt no default_md sha256 distinguished_name dn[ dn ] C CN ST Beijing L Beijing O YourCompany, Inc. # 组织名称 (必填) OU DevOps De…

Pandas 合并数据集:concat 和 append

文章目录Pandas 合并数据集&#xff1a;concat 和 append回顾&#xff1a;NumPy 数组的拼接使用 pd.concat 进行简单拼接重复索引将重复索引视为错误忽略索引添加多级索引&#xff08;MultiIndex&#xff09;键使用连接&#xff08;Join&#xff09;方式拼接append 方法Pandas …

2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(七)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试上午综合知识科目的选择题,同时附带参考答案、解析和所涉知识点。 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(一) 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(…

面向RF设计人员的微带贴片天线计算器

微带贴片天线和阵列可能是仅次于单极天线和偶极天线的最简单的天线设计。这些天线也很容易集成到PCB中&#xff0c;因此通常用于5G天线阵列和雷达等高级系统。这些天线阵列在基谐模式和高阶模式下也遵循一组简单的设计方程&#xff0c;因此您甚至可以在不使用仿真工具的情况下设…