现代CSS 14个实战技巧:父选择器、容器查询、零权重全都有

更新日期: 2026-04-24 阅读: 13 标签: 技巧

新一代CSS已经彻底进化。父选择器、零权重、容器响应、样式逻辑、原生条件判断,现在已经全部原生支持。今天这14个实战技巧,全是大厂真实项目在用的,复制粘贴就能用,能让你的样式表更短、更快、更好维护。


01 :is() —— 合并选择器,代码量砍半

把重复的前缀组合在一起,代码一下就清爽了。

/* 旧写法 */
header p, main p, footer p { line-height: 1.6; }

/* 新写法 */
:is(header, main, footer) p { line-height: 1.6; }

多层嵌套也能叠在一起写:

:is(header, footer) a:is(:hover, :focus) { color: #2563eb; }


02 :where() —— 零权重,组件样式随便覆盖

功能和:is()一模一样,但它的特异性是0。写基础样式和组件默认样式非常好用。

/* 权重高,难覆盖 */
article :is(h2, h3) { color: #222; }

/* 权重0,轻松就能覆盖 */
article :where(h2, h3) { color: #222; }

适合用在UI库、全局重置、基础排版这些场景。


03 :has() —— 父选择器来了,干掉80%的冗余JS

终于能根据子元素或兄弟元素来找父级了,逻辑直接写进CSS里。

/* 包含图片的卡片 */
.card:has(img) { padding-top: 0; border-radius: 12px 12px 0 0; }

/* 表单校验失败时 */
.form-group:has(input:invalid) { border-color: #ef4444; }

/* 有下拉菜单的导航项 */
nav li:has(ul) > a::after { content: "▼"; margin-left: 6px; }

这就是真正的“CSS-if逻辑”,现代浏览器都已经支持了。


04 容器查询 —— 组件级响应式,不再依赖视口

比媒体查询强很多。组件看的是它自己容器的宽度,不是屏幕宽度。

/* 定义容器 */
.sidebar { container-type: inline-size; }

/* 容器够宽就变成横版布局 */
@container (min-width: 380px) {
  .card { display: flex; gap: 16px; }
}

一套组件,能同时适配侧边栏、弹窗、主内容区。


05 @layer 层叠规则 —— 终结权重战争

用“层优先级”来代替权重内卷,结构非常清晰。

@layer reset, base, components, utilities;

@layer base {
  body { line-height: 1.5; }
}

@layer components {
  .btn { padding: 8px 16px; }
}

层越靠后优先级越高,再也不用写!important了。


06 :not() 多条件排除 —— 精准过滤,一行顶三行

新版支持多个选择器并列,不用重复写多个:not()。

/* 排除三类元素 */
div:not(.draft, .hidden, []) {
  background: #fff;
}


07 nth-child 高级公式 —— 批量排版不用加class

不用JS,不用循环,纯CSS就能控制间距和高亮。

/* 第4个及以后的元素 */
li:nth-child(n+4) { margin-top: 12px; }

/* 前5个加粗 */
li:nth-child(-n+5) { font-weight: 600; }

/* 奇偶行不同颜色 */
tr:nth-child(even) { background: #f9fafb; }


08 属性选择器通配符 —— 自动识别链接、文件、状态

像正则表达式一样匹配,自动给链接加图标、标状态。

/* PDF链接 */
a[href$=".pdf"]::after { content: " 📄"; }

/* 外部链接 */
a[href^="http"]:not([href*="你的域名"])::after { content: " 🔗"; }

/* 数据状态 */
.card[] { border-color: #ef4444; }


09 :focus-visible —— 优雅焦点,既好看又支持无障碍

只在键盘导航时显示轮廓,鼠标点击时不会干扰视觉。

button:focus-visible {
  outline: 2px solid #2563eb;
  outline-offset: 2px;
}


10 :empty —— 空元素自动隐藏,布局不乱

没有文字、没有子元素的盒子,直接隐藏,不用JS判断。

section:empty, div:empty { display: none; }


11 相邻兄弟组合 —— 自动加间距、排版逻辑

不用给每个元素加class,通过元素之间的关系自动排版。

/* 列表项之间自动加间距 */
li + li { margin-top: 8px; }

/* 标题后面的所有段落缩进 */
h2 ~ p { padding-left: 1em; }


12 color-mix() —— 原生混色,不用再靠SASS

CSS自己就能混合颜色,做主题色、渐变、调整透明度都很方便。

.btn {
  background: color-mix(in srgb, #2563eb 80%, white 20%);
}


13 accent-color —— 表单原生着色,一行代码统一风格

单选框、复选框、滑动条,一行代码就能换颜色,不用再覆盖伪元素。

input[type="checkbox"],
input[type="radio"] {
  accent-color: #2563eb;
}


14 subgrid —— 嵌套网格对齐,强迫症福音

子网格直接继承父网格的轨道,卡片高度、标题都能完美对齐。

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.card {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3;
}


2026年前端必背:4组黄金组合

  • 复杂选择器::is() + :where(),精简代码

  • 关系判断::has(),替代大量JS逻辑

  • 响应式:容器查询 + 媒体查询,双剑合璧

  • 工程化:@layer 管理优先级,告别权重地狱


最后

现代CSS早已经不是“写样式”了,而是用声明式的逻辑来控制UI。这14个技巧能帮你:

  • 代码量减少60%到70%

  • 维护成本直线下降

  • 页面更流畅,扩展性更强

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13696

相关推荐

20个让你效率更高的CSS代码技巧

在本文中,我们想与您分享一个由各大CSS网站总结推荐的20个有用的规则和实践经验集合。有一些是面向CSS初学者的,有一些知识点是进阶型的。希望每个人通过这篇文章都能学到对自己有用的知识

微信小程序分享到朋友圈方法与技巧

小程序提供onShareAppMessage 函数,此函数只支持分享给我微信朋友,小程序如何分享到朋友圈呢?使用canvas绘制一张图片,并用wx.previewImage预览图片,然后长按图片保存图片到手机。

小技巧:检查你本地及公共 IP 地址

本地的 IP 地址是分配给你计算机上的内部硬件或虚拟网卡的本地/私有 IP 地址。根据你的 LAN 配置,上述 IP 地址可能是静态或动态的。公共的 IP 地址是你的 Internet 服务提供商(ISP)为你分配的公共/外部 IP 地址。

前端新手程序员不知道的 20个小技巧

前端新手程序员不知道的 20个小技巧:作为前端开发者,使用双显示器能大幅提高开发效率、学编程最好的语言不是PHP,是English、东西交付之前偷偷测试一遍、问别人之前最好先自己百度,google一下、把觉得不靠谱的需求放到最后做,很可能到时候需求就变了...

12 个 CSS 高级技巧汇总

使用 :not() 在菜单上应用/取消应用边框;给body添加行高;所有一切都垂直居中;逗号分隔的列表;使用负的 nth-child 选择项目;对图标使用SVG;优化显示文本;对纯CSS滑块使用 max-height;继承 box-sizing

探讨Js奇技淫巧

Js 是一门灵活的语言(手动滑稽)。应该多学习一些奇技淫巧,因为很多奇技淫巧往往代表一些混合的知识,往往会有一些新奇的思考与体验(怎么我想不出来?)

提高网站加载速度的一些小技巧

为你网站的用户留下良好的第一印象是非常必要的。随着商业领域的竞争,拥有一个吸引人的网站可以帮助你脱颖而出。研究表明,如果加载时间超过3秒,会有 40% 的用户放弃访问你的网站

去除桌面快捷方式上的小箭头

电脑桌面上默认快捷方式左下角是有个小箭头的。很多用户可能不习惯快捷方式小箭头。那怎么去掉呢?新建一个TXT文档(文档的名称自己顺便命名即可),然后把下面的这些英文全部复制到TXT文档内保存。把TXT文档的扩展名改成 .bat

微信小程序技巧_你需要知道的小程序开发技巧

一直以来进行了比较多的微信小程序开发... 总会接触到一些和官方组件或 api 相关或其无法解决的需求,于是决定在这里小小的整理一下微信小程序开发的一些技巧

26 个 jQuery使用技巧

禁用右键点击;禁用搜索文本框;新窗口打开链接;检测浏览器;预加载图片;样式筛选;列高度相同;字体大小调整;返回页面顶部;获取鼠标的xy坐标;验证元素是否为空;替换元素

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!