CSS 也要支持 if 了 !!!CSS if() 函数来了!

news/2025/11/13 7:59:57/文章来源:https://www.cnblogs.com/catchadmin/p/19216137

CSS 也要支持 if 了 !!!CSS if() 函数来了!

CSS if() 函数允许在纯 CSS 中基于条件为属性赋值,无需 JavaScript 或预处理器。该函数已在 Chrome 137 发布。

过去常用的做法包括通过 JavaScript 切换类名、使用预处理器 mixin 或编写大量媒体查询。if() 将条件逻辑引入 CSS,使写法更直接、性能稳定。

原文 CSS 也要支持 if 了 !!!CSS if() 函数来了!

工作原理

property: if(condition-1: value-1; condition-2: value-2; condition-3: value-3; else: default-value);

函数按顺序检查条件并应用第一个匹配的值;若没有条件匹配,则使用 else 的值。这一语义与常见编程语言一致,但实现于纯 CSS。

if() 的三种能力

样式查询(Style queries)

使用 style() 可响应 CSS 自定义属性:

.card {--status: attr(data-status type(<custom-ident>));border-color: if(style(--status: pending): royalblue; style(--status: complete): seagreen; style(--status: error): crimson; else: gray);
}

一个 data-status 属性即可驱动对应样式,无需额外工具类。

媒体查询(Media queries)

使用 media() 可以在属性内联定义响应式值,无需嵌套媒体查询块:

h1 {font-size: if(media(width >= 1200px): 3rem; media(width >= 768px): 2.5rem; media(width >= 480px): 2rem; else: 1.75rem);
}

特性检测(Feature detection)

使用 supports() 可在属性中直接进行特性检测,并提供明确回退:

.element {border-color: if(supports(color: lch(0 0 0)): lch(50% 100 150) ; supports(color: lab(0 0 0)): lab(50 100 -50) ; else: rgb(200, 100, 50));
}

真实用例

暗色模式示例

body {--theme: 'dark'; /* 通过 JavaScript 或用户偏好切换 */background: if(style(--theme: 'dark'): #1a1a1a; else: white);color: if(style(--theme: 'dark'): #e4e4e4; else: #333);
}

设计系统状态组件

.alert {--type: attr(data-type type(<custom-ident>));background: if(style(--type: success): #d4edda; style(--type: warning): #fff3cd; style(--type: danger): #f8d7da; style(--type: info): #d1ecf1; else: #f8f9fa);border-left: 4px solid if(style(--type: success): #28a745; style(--type: warning): #ffc107; style(--type: danger): #dc3545; style(--type: info): #17a2b8; else: #6c757d);
}

容器尺寸示例(简化媒体查询)

.container {width: if(media(width >= 1400px): 1320px; media(width >= 1200px): 1140px; media(width >= 992px): 960px; media(width >= 768px): 720px; media(width >= 576px): 540px; else: 100%);padding-inline: if(media(width >= 768px): 2rem; else: 1rem);
}

与现代 CSS 特性结合

.element {/* 搭配新的 light-dark() 函数 */color: if(style(--high-contrast: true): black; else: light-dark(#333, #e4e4e4));/* 搭配 CSS 自定义函数(@function) */padding: if(style(--spacing: loose): --spacing-function(2) ; style(--spacing: tight): --spacing-function(0.5) ; else: --spacing-function(1));
}

浏览器支持

支持情况(截至 2025 年 8 月):

  • ✅ Chrome/Edge:自 137 版起
  • ✅ Chrome Android:自 139 版起
  • ❌ Firefox:开发中
  • ❌ Safari:在规划中
  • ❌ Opera:尚未支持

在尚未完全支持的环境中,可采用如下写法:

.button {/* 所有浏览器的回退 */padding: 1rem 2rem;background: #007bff;/* 现代浏览器会自动覆盖 */padding: if(style(--size: small): 0.5rem 1rem; style(--size: large): 1.5rem 3rem; else: 1rem 2rem);background: if(style(--variant: primary): #007bff; style(--variant: success): #28a745; style(--variant: danger): #dc3545; else: #6c757d);
}

未来展望

CSS 工作组已经在推进扩展能力:

  • 范围查询:if(style(--value > 100): ...)
  • 逻辑运算符:if(style(--a: true) and style(--b: false): ...)
  • 容器查询集成:更强的上下文感知

在使用前建议评估目标浏览器版本,并准备相应回退方案。

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

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

相关文章

粉末西林瓶灌装机:阿里地区快速拆卸灌装头,便捷更换灭菌

在当前制药与生物制剂设备市场中,西林瓶灌装机作为关键的包装设备,其结构设计是否便于清洁、灭菌及快速更换,直接影响到生产效率与GMP合规水平。尤其对于粉末西林瓶灌装机而言,灌装头的可拆卸性不仅是日常维护的基…

西林瓶灌装线合规更新,枣庄厂家免费同步标准

近年来,制药装备采购决策正经历显著变化。据行业调研数据显示,2024年药企在灌装设备选型过程中,对“合规文件是否随法规动态更新”的关注度已升至78.6%,较三年前提升近30个百分点;同时,超过65%的采购负责人将“厂…

代码 Collection

charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"charmap = []def gen_grid():ptr = 0for i in range(8):row = []for j in range(8):row.append(charset[ptr])ptr = ptr + 1…

2025年五个女博士可信吗:深度解析科研实力与市场认可度

引言 本文从“科研实力与市场认可度”这一核心维度出发,为读者提供一份关于“五个女博士”品牌可信度的针对性客观参考,避免泛泛而谈。 背景与概况 五个女博士成立于2019年,是由五位毕业于北京大学的医学女博士联合…

2025年五个女博士可信吗:权威盘点科研链路与市场验证

引言 本文从“科研链路完整度”这一核心维度出发,对“五个女博士”品牌进行拆解,为正在考虑长期口服胶原蛋白肽的消费者提供一条可追踪、可验证、可复盘的客观参考路径,避免被营销话术裹挟。 背景与概况 五个女博士…

2025年五个女博士可信吗:科研底色与市场争议并存的深度盘点

引言 本文从“科研证据链完整度”这一单一维度切入,系统评估五个女博士在口服美容赛道中的真实可信度,为理性消费者提供可验证、可复盘的决策参考。 背景与概况 五个女博士成立于2019年,是由五位毕业于北京大学的医…

2025年11月路灯厂家十大推荐:大功率高杆灯景观灯定制榜

2025年11月,各地市政处、园区管委会与工程总包方集中进入年度路灯招采尾声,却普遍面临“既要交期快、又要能耗低、还要售后本地有人”的三重夹击。传统比价模式已难兼顾智慧升级、文化定制与跨境交付,决策者亟需一张…

2025年11月固化土设备厂家推荐榜:资质服务全评测排行

正在准备回填或地基改良的工程队,最近常被“固化土设备厂家怎么选”卡住:工期紧、环保严、原料杂,设备一旦掉链子,直接拉垮整条生产线。2025年四季度,全国固化土市场规模已突破180亿元,川渝、长三角、珠三角三地…

2025年11月固化土设备厂家推荐榜:成都立拓领衔全维度对比评测

正在赶工回填的市政项目经理、需要处理尾矿渣的矿山修复负责人、想把固废变成路基材料的环保公司,都在问同一个问题:到底该选哪家固化土设备厂家?2025年,国内固化土市场年增速保持在18%左右,政策端《“十四五”土…

2025年11月固化土设备厂家排行:从资质到案例的五家横向对比评价

正在高速推进的城中村改造、矿山修复、高等级道路基层换填项目,让“固化土”成为2025年基建搜索热词。大量总包单位、环保工程公司第一次接触“固化土设备厂家”时,往往陷入三重焦虑:一是担心设备与本地土质不匹配,…

2025年11月路灯厂家十大推荐榜:智慧照明采购必看权威榜单

2025年11月,全国市政改造、园区升级、乡村振兴项目集中进入招标冲刺期,路灯作为夜间安全与能耗管理的双重入口,采购决策人普遍面临“既要交期快、又要能耗低、还要售后本地能响应”的三重压力。面对上百个自称“源头…

windows上开源小项目 Rawrite32

https://www.netbsd.org/~martin/rawrite32/download.htmlRawrite32The NetBSDimage writing tool Home | Help | License | DownloadIf youve found the license acceptable, you can download the program and/or …

读社会工程:安全体系中的人性漏洞(第2版)02社会工程金字塔

读社会工程:安全体系中的人性漏洞(第2版)02社会工程金字塔1. 交流模式 1.1. 香农-韦弗模式(Shannon-Weaver model) 1.2. 贝罗传播模式(又称SMCR传播模式) 1.3. 原则都是相似的 1.4. 当你第一次走出舒适区尝试新…

网站减碳优化指南:最小化环境影响的实用策略

本文详细介绍了如何通过优化网站性能来减少碳排放,包括识别关键用户旅程、基准测试、设定目标、实施减碳措施和跟踪进展的五步法,帮助网站实现环境友好与性能提升的双重目标。如何最小化您网站的环境影响 作为负责任…

k8s Service IP 变化的情况

会导致 Service IP 变化的情况: 表格 复制场景说明删除并重新创建 Service 这是最常见的情况。只要 kubectl delete svc 后再 apply,新 Service 会重新从集群 IP 池中分配一个 IP,几乎不可能分到原来的 。修改 Serv…

北京疯狂游戏 Unity 游戏客户端开发面经(一面 二面)

我的第一次面试,过程复盘与失败教训总结写在前面 面试题目仅靠回忆,复盘过程借助 Gemini 2.5 Pro,内容可能存在错误或偏差。 疯狂游戏主要做小程序游戏,知名作品有《咸鱼之王》等。在Boss直聘上投递天津的岗位,简…

HIL/SIL/PIL介绍

https://zhuanlan.zhihu.com/p/5907578226 https://blog.csdn.net/Pangbo1711/article/details/133426683 https://www.cnblogs.com/zhjblogs/p/13773571.html https://zhuanlan.zhihu.com/p/148337548

Notepad++下载安装教程

转载自:上羽伴水 https://zhuanlan.zhihu.com/p/1920981416533010207 一、Notepad++软件介绍 1.界面与操作介绍 Notepad++ v8.6.4 界面简洁直观。顶部菜单栏涵盖文件、编辑、搜索等功能选项;工具栏放置常用操作快捷按…

Linux下安装VirtualBox 7.2.4(含坑),以及微信输入法与微软输入法哪个大

apt list找不到virtualbox,到Oracle网站去下载的。 选择了for Debian 12的: 109M 11月13日 01:18 virtualbox-7.2_7.2.4-170995~Debian~bookworm_amd64.deb 下载速度很快 dpkg -i *.deb 装上了。 virtualbox进去了,…

Linux下安装VirtualBox 7.2.4(含坑)

apt list找不到virtualbox,到Oracle网站去下载的。 选择了for Debian 12的: 109M 11月13日 01:18 virtualbox-7.2_7.2.4-170995~Debian~bookworm_amd64.deb 下载速度很快 dpkg -i *.deb 装上了。 virtualbox进去了,…