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

10个css更新

文章目录

    • 1. Container Queries
    • 2. :has()
    • 3. CSS Nesting(原生嵌套)
    • 4. Anchor Positioning API(锚定定位)
    • 5. Scroll-Linked Animations(滚动联动动画)
    • 6. if()(条件函数)
    • 7. @scope
    • 8. Cascade Layers(级联层)
    • 9. 现代色彩函数
    • 10. Subgrid

1. Container Queries

过去我们都按屏幕宽度适配。布局简单还行;组件化之后就崩:卡片套格子、格子套侧栏、侧栏再塞进弹窗…… 你真正想要的是:组件响应它的容器,而不是整个窗口。

现在可以了。

.card-wrap {container-type: inline-size;container-name: card;
}@container card (min-width:280px) {
.card { padding: 24px; font-size: 1rem; }
}
@container card (max-width:279px) {
.card { padding: 12px; font-size: .9rem; }
}

给父级起名(container-name),用 @container 按容器尺寸写样式。 不需要 JS Hack,不需要 ResizeObserver。组件真正可复用,丢到哪里都能自适应。

2. :has()

CSS 终于有了条件感知。 以前你不能根据子元素去选中父元素,只能上 JS:“如果这张卡里有图片就加个 class”。

现在 CSS 自己会判断:

form:has(input:invalid) {border: 2px solid red;
}.post:has(img) {display: grid;grid-template-columns: 200px 1fr;gap: 1rem;
}

把 :has() 当成全民呼唤多年的父选择器。它是响应式的关系选择。 但也危险:复杂选择器会炸性能(比如 div:has(.card:has(img[src$=“.gif”])) 这类组合),浏览器很努力,但别虐它。

Verdict:Fuck.用得好是神,用过头会卡成 PPT。

3. CSS Nesting(原生嵌套)

用过 Sass/Less 的人都“假装”写了多年,现在原生支持:

.header {
padding: 1rem;& h1 {margin: 0;font-size: 1.5rem;}& nav {display: flex;gap: 1rem;& a {text-decoration: none;color: inherit;}}
}

少写重复选择器,没了构建依赖。 但别五层嵌套,那是自杀式可维护性。保持浅层结构。

Verdict:Fuck.这就该是 CSS 的本来面目。

4. Anchor Positioning API(锚定定位)

终于有了原生的工具提示/下拉/气泡的“跟随定位”。 以前全是 JS 去绑位置、监听滚动、计算边界。

<button class="btn">Click me</button>
<div class="tooltip">Tooltip text here</div>
.btn {
anchor-name: --btn;
}.tooltip {
position: absolute;
position-anchor: --btn;
bottom: anchor(top);
left: anchor(center);
transform: translateX(-50%);
position-try-fallbacks: flip-block;
background: #222; color: #fff;
padding: 6px12px; border-radius: 4px;
}

按钮成为锚点。
tooltip 相对锚点定位。
没空间会自动翻转。 零 JS,无 getBoundingClientRect(),无 scroll 监听。
兼容性目前Chromium 领先,其他在路上。等全覆盖,你会忘了那些定位库。

Verdict:Fuck(但目前主要在 Chrome 系里)。被低估的顶级新 API。

5. Scroll-Linked Animations(滚动联动动画)

你见过“滚动即动画”的页面,大多是超负荷 JS + 超耐心调试。 现在 CSS 内建:

@scroll-timeline --page-tl {
source: auto;
orientation: block;
}header.logo {
animation: fade 1s linear both;
animation-timeline: --page-tl;
animation-range: 020%;
}@keyframes fade {
from { opacity: 1; transform: translateY(0); }
to   { opacity: 0; transform: translateY(-20px); }
}

动画直接绑定滚动进度,更流畅、更易读,不再依赖庞大 JS 库。

Verdict:Fuck.简单、顺滑、优雅。

6. if()(条件函数)

CSS 终于能做小决策。 像逻辑,但没完全变编程语言

.button {padding: if(style(--compact: true): 6px 10px; else: 12px 18px);background: if(prefers-color-scheme: dark: #222; else: #fff);
}

可以检查自定义属性、系统偏好等,内联决策。

Verdict:Mixed.偶尔妙用,滥用会混乱。

7. @scope

小招解决大痛点。 全局 CSS 是混沌:一个 footer 里的 .card img 就能炸整个站。

@scope 把样式限定在局部:

@scope (.card) {img { border-radius: 8px; }h3  { margin-bottom: .5rem; }
}

像平民版 Shadow DOM,没有复杂性。 终于可以局部组件化,不必把类名写成 card__image__inner 那种“欧洲中世纪姓氏”。

Verdict:Fuck.组件样式回到可控轨道(React 用户会想起 *.module.css 的舒适感)。

8. Cascade Layers(级联层)

花半小时找“为什么样式没生效”?多半是级联“心情不好”。层让优先级可设计:

@layer reset, base, components, utilities;@layer base {button { border-radius: 6px; }
}
@layer components {.btn { padding: .6rem 1rem; }
}
@layer utilities {.btn { text-transform: uppercase; }
}

你知道谁赢、为什么赢。把级联从敌人变工具。

Verdict:Fuck.不是酷炫,但救心智。

9. 现代色彩函数

设计师终于有讲理的颜色了。

:root {--brand: oklch(60% 0.16 210);
}.button {background: color-mix(in oklch, var(--brand) 80%, white 20%);color: color-contrast(var(--brand) vs white, black);
}

在 CSS 里直接混色、对比、偏移。 OKLCH/LAB 更符合人眼感知,渐变更顺滑、跨设备更稳定。 它不仅更好看,更可预测。

Verdict:Fuck.低调但专业感爆棚。

10. Subgrid

修了布局史上最“智障”的坑。 父网格 + 子网格=永远对不齐。subgrid 直接继承父网格轨道:

.pricing {display: grid;grid-template-columns: 1fr 1fr 1fr;gap: 20px;
}.card {display: grid;grid-template-rows: subgrid;
}

子网格继承父级的轨道尺寸,嵌套完美对齐。 不花哨,但无可替代。

Verdict:Fuck.布局体系的无声英雄。

Personal Take(主观总结)
2025 的 CSS 让人心安: 不再追着 JS 吃灰,结构、逻辑、清晰度都有了,同时保留了简洁。

但权力即代价:越强的 CSS 越容易写出技术惊艳、维护地狱的代码。请聪明地用:用新特性简化代码,而不是炫技。未来的你会感谢现在的你。

因为头一回,CSS 不只是“给页面上色”——它在“构建”页面。

http://www.dtcms.com/a/577168.html

相关文章:

  • Git 实现github仓库管理-删除指定目录下的所有文件并保留目录结构
  • INT305 Machine Learning 机器学习 Pt.6 卷积神经网络(Convolutional Neural Network)
  • 方案分享:一款基于低功耗单片机的腰腹甩脂机方案
  • 鸿蒙开发TypeScript第三课:数组
  • React 15
  • 浏览器开发者工具(尤其是 Vue Devtools 扩展)和 Vuex 的的订阅模式冲突
  • 网站建设核电程序员找工作的网站
  • 特殊三列布局需求
  • js(DOM)基础:11、DOM定义、事件、文档的加载、DOM查询1、DOM实现轮播图、DOM查询2、DOM实现全选
  • 想做个电影网站该怎么做阳春ycqq人才招聘信息
  • JavaScript的Web APIs 入门到实战(day4):DOM 进阶与日期对象(附巩固练习和案例讲解)
  • AtCoder Educational DP Contest 刷题记录Ⅰ
  • WPF CalcBinding简化判断逻辑
  • HarmonyOS NFC应用开发:构建分布式近场通信解决方案
  • Robinhood的再进化:从零佣金交易到链上金融超级应用
  • Rust开发实战之简单游戏开发(piston游戏引擎)
  • MK9019 Buck降压电路设计笔记(光伏发电应用优化版 - UVLO 7V设置)
  • 5118网站的功能郑州网站优化公司排名
  • MQTT协议之QoS0(<=1)、QoS1(>=1)、QoS2(=1)详解
  • Dify使用02-Dify集成Ollama
  • [免费]基于Python的Flask酒店客房管理系统【论文+源码+SQL脚本】
  • LeetCode 219.存在重复元素2
  • 【CS224N】《深度学习自然语言处理》完整版笔记
  • 广东企业网站建设推荐网站做收录
  • XC7Z020-1CLG484I Xilinx AMD FPGA Zynq-7000 SoC
  • 论文分享 | BARD-GS:基于高斯泼溅的模糊感知动态场景重建
  • FPGA—ZYNQ学习spi(六)
  • 多智能体医疗会诊系统
  • ETCD 压力测试脚本
  • kali的下载和安装【ISO安装】