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

我发现了人人都在吹的 CSS 神技——然后我的写法彻底变了

我有一支技术全面、经验丰富的小型团队,专注高效交付中等规模外包项目,有需要外包项目的可以联系我

你又花了 45 分钟和垂直对齐死磕。又一次。 标题莫名其妙换成三行,旁边那个却刚好“看起来很舒服”。你试了line-height,试了各种 padding 玄学,还至少嘀咕过两次:“CSS 怎么这么反人类?”

我懂。我也经历过。

但关键在于:CSS 其实已经悄悄变得强得离谱。当你还在用老套路硬扛时,语言本身已经升级了。只是大多数开发者还在用 2015 年的方式写 2025 年的 CSS。

你以为的 CSS vs 真实存在的 CSS

2015 年的 CSS:

/* 暗黑模式 */ :root { --bg: white; } @media (prefers-color-scheme: dark) { :root { --bg: black; } } /* 父元素根据子元素来改样式 */ /* 用 JavaScript */ /* 固定宽高比 */ .container { padding-bottom: 56.25%; /* 数学! */ } /* 动画高度 */ /* 用 max-height 然后祈祷 */

2025 年的 CSS:

/* 暗黑模式 */ background: light-dark(white, black); /* 父元素根据子元素来改样式 */ .card:has(img) { } /* 固定宽高比 */ aspect-ratio: 16/9; /* 动画高度 */ height: auto; /* 是的,真的 */

《State of CSS 2025》刚发布,里面有个很有意思的现象:那些能解决你日常痛点的功能,其实就摆在那儿——只是你没用。不是因为它们不好,而是你根本不知道它们存在。

我带你把这些漏掉的东西捡起来。

人人都在用的那个功能

:has()是目前最常用、也是最受喜爱的 CSS 新特性。

那个从远古时代就被求了无数次的“父选择器”,终于来了。能用。好用。用过的人都很爱。

以前你得写这种东西:

/* 如果 card 里有图片,就给它一个特殊 class */ .card.has-image { }

然后你还得手动加 class——或者用 JavaScript——像在受刑。

有了:has()之后:

/* 任何包含 img 的 card 都自动匹配 */ .card:has(img) { }

一句话。纯 CSS。零 JavaScript。

我是在 6 个月前给客户重建组件库时彻底被震到:我们有 19 种卡片变体,每一种都靠 class 标记“有图 / 有视频 / 空内容”。代码像垃圾场。后来用:has()直接删掉 200 行 JS,换成 6 行 CSS。包体积还少了 18KB。

那一刻我才意识到:我这些年 CSS 写错了。

开发者真心喜欢的 Top 5 功能

调查里最“省命”的几个赢家大概是这些:

1):has():我们一直想要的父选择器

最常用、最受喜爱。不是营销,是大家真的在用。

2)Subgrid:喜爱度第二名

嵌套网格终于能跟父网格对齐了。Subgrid 在“最受喜爱”排名里拿了第二。

旧办法(祈祷对齐):

/* 旧:靠算,靠蒙 */ .child { margin-left: calc(var(--gap) * 2); }

新办法(subgrid):

.child-grid { display: grid; grid-template-columns: subgrid; }
3)aspect-ratio:使用率第二、喜爱度第三

从此告别 padding-bottom 黑魔法。它在使用率是 #2、情绪排名 #3。

.video-container { aspect-ratio: 16 / 9; }
4)text-wrap: pretty:年度增幅最大

使用增长最快的就是它。 ([2025.stateofcss.com][1])

h1 { text-wrap: pretty; }
5)light-dark():认知增长最大

认知度提升最大的就是light-dark()

旧写法:

:root { --text-color: #333; } @media (prefers-color-scheme: dark) { :root { --text-color: #fff; } } .text { color: var(--text-color); }

新写法:

.text { color: light-dark(#333, #fff); }

那些几乎没人用、但你应该知道的东西

  • ::target-text82% 的人甚至没听过,却是“阅读列表”好奇度第一名。 这个伪元素可以在用户分享“文本片段链接”(#:~:text=)时,把被命中的文字高亮做得更友好。

  • sibling-count/sibling-index:使用率垫底(支持度还很新)。 你可以根据兄弟元素数量/位置来写样式,对动态布局很猛。

也有大家不喜欢的东西

  • 三角函数(sin()/cos()/tan())是“最不受喜爱”之一——因为“要算三角”这件事本身就够劝退。

  • Anchor positioning 的“正向期待 vs 实际使用”出现-12% 的落差,可能说明 API 没想象中友好。

开发者真实在痛什么

调查里问的痛点,基本就是我们的日常:

1)布局:Grid 太强,但每次都要 Google 2)排版:垂直对齐还是像没修完的坑(text-box-edge/text-box-trim在路上) 3)颜色:不仅要 light/dark,还要更完整的主题系统,外加对比度难题 4)交互:“高度动画到 auto”曾经是头号难题——好消息:现在“终于可以做到了”。 5)形状:非矩形(多边形、复杂图形)依旧折磨人,很多人还是逃去 SVG 6)数学:calc()的单位混算依旧容易踩雷

旧办法 vs 新办法(示意):

/* 旧:max-height 然后祈祷 */ .accordion { max-height: 0; transition: max-height 0.3s; } .accordion.open { max-height: 500px; }
/* 新:尝试直接过渡到 auto(需要关注新方案/支持情况) */ .accordion { height: 0; transition: height 0.3s; } .accordion.open { height: auto; }

这对你的工作流意味着什么

我读完调查再去实测,得到一个结论:工具都在,我们只是习惯太旧。

现在的 CSS,能用更少代码解决我们以前硬塞给 JS 的问题::has()做条件样式,text-wrap做排版,light-dark()做主题,甚至动画都能更“原生”。

你现在可以做三件事:

1)先用调查里的 Baseline Status 过滤,优先看 “Widely Available”。 2)每个项目只学一个功能 3)先读痛点,再反推“解决方案”

今天就值得学的功能

立刻有收益:

  • :has()

  • text-wrap: balance / pretty

  • aspect-ratio

  • “auto 尺寸动画”的新方案(关注浏览器实现)

下一步:

  • Subgrid

  • light-dark()

更长期:

  • Anchor positioning(现在有点硬,但未来可能会成为基础设施)

  • 新颜色函数(例如oklch()


真正的问题不是 CSS

读完调查后我才意识到:CSS 不是问题,我们的习惯才是。

我们在 2010/2015/2018 学的那套写法太顺手,以至于我们不再质疑它。可 CSS 一直在进化。那个曾经“连 div 都居中不了”的语言,现在已经强到能替你删掉一堆框架级别的补丁代码。

你的下一步很简单: 打开《State of CSS 2025》,挑一个你没用过的功能,玩 15 分钟。 不用全学,一个就够。

因为此刻,某个开发者正在用 6 行现代 CSS 解决你正在用 200 行 JavaScript 硬扛的问题。

全栈AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。

最后:

CSS终极指南

Vue 设计模式实战指南

20个前端开发者必备的响应式布局

深入React:从基础到最佳实践完整攻略

python 技巧精讲

React Hook 深入浅出

CSS技巧与案例详解

vue2与vue3技巧合集

http://www.jsqmd.com/news/125816/

相关文章:

  • 从单点充电到全域智控:安科瑞重塑新能源充电生态
  • 图解说明Altium Designer高速信号回流路径设计
  • 2025年中国电缆一线品牌推荐:中国电缆知名品牌盘点,缆标杆品牌推荐(12月更新) - 品牌2026
  • 户外LED显示屏安装前期风载与防水考量深度解析
  • rust自动调用Deref(deepseek)
  • 告别传统照明痛点,安科瑞智能系统开启智慧控光新时代
  • 全自研仿真GPU求解器x虚实对标物理测量工厂,打造具身合成数据SuperApp,加速具身仿真生态丨光轮智能@MEET2026
  • SmartLayout智能窗口布局工具:重新定义你的多任务工作空间
  • LangFlow语音助手前后端联动设计方案
  • LangFlow SQL生成助手构建过程全记录
  • 如果早点知道这 7 个 Mac 神器,我的早晨至少能少崩溃一半
  • 中国电缆一线品牌推荐2025年TOP榜单:矿山煤矿、变频、光伏、绝缘、工程项目电缆标杆品牌盘点(12月新版) - 品牌2026
  • 基于Keil的STM32实时变量监控:图解说明方法
  • 串口数据缓存管理策略:qserialport高级应用指南
  • STM32CubeMX无法打开:新手教程之Windows权限设置
  • Altium高速布局技巧:减少串扰的实用方法
  • .NET+AI | Agent | Agent as Function (14)
  • 如何在 Python 中对面板数据进行交叉验证
  • 达梦数据库备份还原
  • elasticsearch官网在日志分析中的核心要点解析
  • LangFlow法律文书辅助撰写系统设计思路
  • 如何创建自定义 Matplotlib 主题,并让您的图表从无聊变得精彩
  • Packet Tracer官网下载后的更新与升级方法
  • 抖音下载工具无水印终极指南:实用技巧与高效方法
  • LangFlow JSON解析器节点应用实例:提取结构化结果
  • 智能机器狗项目开发中的问题记录
  • 新手教程:手把手教你掌握DRC基本概念与使用场景
  • 如何在 Matplotlib 中创建自定义颜色调色板 – 离散与线性颜色映射,解释说明
  • 2025年年终成都四川工作服厂家推荐:聚焦大型企业集团采购需求,专家严选5家优质供应商案例盘点 - 品牌推荐
  • 如何在数据科学职位申请中创造机会并获得成功