WEB

前端技术

深入解析浏览器运行机制、Web 标准、性能工程与前端架构实践。

40 篇文章

CSS 相对颜色语法如何从现有颜色派生新颜色:从颜色计算到设计系统

相对颜色语法让浏览器在运行时基于已有颜色通道计算新颜色,无需 Sass 或 JavaScript 预处理。文章以主题色生成悬停态为贯穿场景,解释 from 关键字与通道变量的处理模型,对比 color-mix() 的混合逻辑,说明与 Sass 颜色函数的差异、浏览器支持边界与回退写法。

CSS scrollbar-gutter 如何预留滚动条空间:为什么 overlay 滚动条会导致布局偏移

固定宽度页面在内容变长时,经典滚动条会挤占可用宽度,导致整页内容横向跳动。本文解释 scrollbar-gutter 的 gutter 位置与 stable、both-edges 取值如何提前预留空间,说明 overlay 滚动条下该属性为何失效,并对比 padding 方案、给出诊断信号与适用边界。

font-size-adjust 如何保持备用字体的视觉尺寸:从 x 高度到字体回退

当首选字体不可用而回退到备用字体时,文本的视觉大小可能突变。本文以中文网页的多字体回退栈为例,解释 font-size-adjust 如何通过调整字号使备用字体的 x 高度与首选字体一致,并分析其计算机制、对行高与布局的影响以及浏览器支持边界。

CSS 滚动驱动动画的 range:如何精确控制动画的起止进度

本文聚焦 CSS 滚动驱动动画中 animation-range 的机制,解释如何将动画时间线映射到滚动容器的特定区间,并与默认的全区间映射对比。以长页面中多个元素依次进入视口触发动画为例,结合 IntersectionObserver 方案分析 range 的触发时机、性能影响、适用边界与浏览器支持。

CSS 滚动驱动动画的 timeline-scope:为什么命名时间线需要作用域提升

本文讨论 CSS scroll-driven animations 中 timeline-scope 属性的作用:它如何将子元素的命名滚动时间线提升到祖先作用域,使非父子关系的元素也能共享同一时间线。以页面级滚动进度条驱动多个区域动画的场景为例,说明命名时间线的查找机制、作用域限制、timeline-scope 的声明方式及其对动画同步的影响,对比传统 JS 滚动监听方案的性能与复杂度,并给出适用边界与浏览器支持。

CSS 动画与合成器提升:为什么 transform 和 opacity 动画不触发重排

本文以首屏轮播图为例,解释浏览器如何将 transform 和 opacity 动画提升到合成器线程,避免主线程的布局与绘制。通过对比修改 width/left 与 transform 的渲染路径,说明合成层的创建条件、层爆炸风险及性能影响,帮助前端开发者做出合理的动画性能优化决策。

OffscreenCanvas 如何将 Canvas 渲染移出主线程:Worker 中的绘制与合成

本文以实时数据可视化场景为例,解析 OffscreenCanvas 如何在 Web Worker 中执行 Canvas 绘制,通过 transferable 对象避免主线程阻塞,并分析其与合成器线程的交互。文章对比主线程 Canvas 与 OffscreenCanvas 的性能差异,讨论浏览器支持、调试限制及适用边界,帮助开发者判断何时值得迁移渲染逻辑。

CSS content-visibility 如何跳过离屏渲染:长商品列表滚动不再卡顿的机制与边界

本文以长商品列表为例,解析 content-visibility 如何通过布局、样式、绘制包含与交集观察跳过离屏元素的渲染,从而降低初始渲染与滚动时的布局绘制成本。同时说明它与 contain 的区别、auto 的失效条件、对滚动条和可访问性的影响,以及何时应该使用。

第三方脚本如何阻塞主线程:解析器阻塞与长任务对 Core Web Vitals 的影响

本文以新闻门户页面为例,分析第三方脚本如何通过阻塞 HTML 解析、执行长任务和占用网络带宽,拖慢 LCP 与 TBT。文章将解释 async/defer 的局限,并比较按需加载、iframe 隔离、资源提示等缓解措施的收益与代价,帮助开发者做出有依据的工程决策。

HTTP 缓存中的 immutable 与 stale-while-revalidate:静态资源更新场景下的新鲜度与性能平衡

本文以静态资源更新场景为例,分析 Cache-Control 的 immutable 与 stale-while-revalidate 指令如何控制浏览器缓存行为,减少重复请求并提升加载速度。你将理解启发式缓存、显式过期与后台重新验证的机制,并获得配置建议与适用边界。