2026 年的 CSS 已经脱胎换骨
过去几年 CSS 标准化的速度大幅提升,2026 年的 CSS 已经强大到让很多预处理器的功能变得多余。
CSS Nesting(嵌套)
2025 年底所有主流浏览器已全面支持 CSS 嵌套,Sass/Less 的最大卖点消失了:
.card {
background: white;
border-radius: 8px;
/* 直接嵌套,无需 & 前缀 */
.title {
font-size: 1.25rem;
font-weight: 600;
}
.body {
color: #666;
line-height: 1.6;
/* 深层嵌套 */
a {
color: #3b82f6;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
}
}
@layer — 控制级联
层叠(Cascade)一直是 CSS 的痛点,@layer 让你显式控制样式优先级:
/* 定义层的顺序 — 越后面的优先级越高 */
@layer reset, base, components, utilities;
/* 第三方样式归入 reset 层 */
@layer reset {
@import "normalize.css";
}
@layer components {
.btn { padding: 8px 16px; border-radius: 4px; }
}
@layer utilities {
.mt-4 { margin-top: 1rem; }
}
has() 选择器 — CSS 终于有了父选择器
/* 包含 .error 子元素的表单加红色边框 */
form:has(.error) {
border-color: #ef4444;
}
/* 当卡片中有图片时使用不同布局 */
.card:has(img) {
grid-template-columns: 200px 1fr;
}
/* 已勾选的复选框旁边的标签加粗 */
input:checked + label {
font-weight: 700;
}
/* 没有任何子项的列表隐藏 */
ul:empty {
display: none;
}
容器查询 + 样式查询
.container {
container-type: inline-size;
container-name: sidebar;
}
/* 当容器宽度 > 400px 时 */
@container sidebar (min-width: 400px) {
.card { flex-direction: row; }
}
/* 当容器宽度 < 300px 时 */
@container (max-width: 300px) {
.card { font-size: 0.875rem; }
}
颜色空间:OKLCH 和 Display P3
2026 年的显示器广泛支持广色域,CSS 也跟上了:
.element {
/* sRGB 色域 — 传统 */
color: #3b82f6;
/* OKLCH — 更广色域,更直观 */
color: oklch(56% 0.2 250deg);
/* Display P3 — 苹果设备广色域 */
color: color(display-p3 0.2 0.5 0.9);
}
这些新特性让 CSS 变得前所未有的强大,Sass/Less 的很多功能已经被原生 CSS 取代,值得每个前端开发者重新审视自己的样式方案。