呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态

图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
#优质博文 #React #前端 #工程化 #SSR #组件设计 #course
Building Bulletproof React Components:一位 Vercel 资深工程师分享如何构建能应对真实复杂场景的健壮 React 组件。

AI 摘要:本文系统性地提出了构建 React 组件的十大原则,涵盖服务端渲染(Server Rendering)、水合(Hydration)、多实例、并发渲染(Concurrent Rendering)、组合(Composition)、Portal、View Transition、Activity、数据泄露防护及未来兼容性等现代 React 应用中的关键挑战。作者通过具体代码示例,展示了常见陷阱及其解决方案,强调组件应具备在不可预测环境中稳定运行的能力,而非仅满足“理想路径”下的功能实现。

[以下是方便搜索索引的大纲(AI 生成),请读原文
1. 服务端与水合兼容性
• Server-Proof:避免在组件顶层直接调用浏览器专属 API(如 localStorage),应将相关逻辑移至 useEffect 中,确保服务端渲染(SSR)不崩溃。
• Hydration-Proof:防止水合过程中的视觉闪烁(FOUC),可通过内联 <script> 在 React 水合前同步设置 DOM 状态,确保服务端与客户端初始渲染一致。

2. 多实例与上下文隔离
• Instance-Proof:使用 React 的 useId Hook 为每个组件实例生成唯一 ID,避免多个同类型组件因共享硬编码 ID 而相互干扰。
• Portal-Proof:监听事件时应基于组件所在 DOM 的 ownerDocument.defaultView 获取正确 window 对象,确保在 iframe、弹窗或 createPortal 场景下仍能正常工作。

3. 并发与异步渲染适配
• Concurrent-Proof:在 Server Component 中使用 React.cache 包装数据获取逻辑,避免同一请求内多次重复调用相同异步操作。
• Transition-Proof:配合 React 19 的 <ViewTransition> 实现平滑 UI 切换时,状态更新需通过 startTransition 触发,以启用过渡动画。

4. 组合性与副作用管理
• Composition-Proof:优先使用 Context 而非 React.cloneElement 向子组件传递数据,以兼容 Server Component、lazy 加载和异步 children 等现代 React 特性。
• Activity-Proof:对于通过 <style> 注入全局 CSS 变量的组件,在被 <Activity> 隐藏时应通过 useLayoutEffect 动态设置 media="not all" 来禁用样式,防止副作用残留。

5. 安全与未来兼容性
• Leak-Proof:利用 experimental_taintUniqueValue 或 experimental_taintObjectReference 标记敏感数据(如 token),防止其意外序列化并泄露至客户端。
• Future-Proof:当组件行为依赖值的持久性时(如随机色生成),应使用 useState 而非 useMemo,因为后者仅为性能提示,React 可能在 HMR 或未来优化中丢弃缓存。


author Shu Ding Building Bulletproof React Components - Shu Ding
#优质博文 #前端 #CSS #可视化 #WCAG
Trying to Make the Perfect Pie Chart in CSS 这是真 CSS 魔法师(探索如何仅用 CSS(辅以极少量 JavaScript)构建语义化、可定制且无障碍的饼图。

AI 摘要:本文作者 Juan Diego Rodríguez 试图在尽量不依赖 JavaScript 的前提下,用纯 CSS 构建一个“完美”的饼图,需满足三大目标:语义化(屏幕阅读器可读)、HTML 可定制(仅改 HTML 即可更新图表)、JavaScript 最小化。文章首先指出 conic-gradient() 虽能快速绘制饼图,但缺乏语义且难以动态定制;随后提出基于 <figure> + <ul> 的语义化结构,利用 data-percentage 和 data-color 属性驱动样式,并通过 CSS 自定义属性(--radius、--percentage、--bg-color 等)结合 attr() 函数提取数据。由于 CSS 无法在兄弟元素间累积状态,作者借助极简 JavaScript 计算每个扇形的起始角度(--accum),再通过 conic-gradient(from var(--offset)) 实现正确旋转。最后,利用 CSS Grid 叠放扇形,并借助 cos() 与 sin() 函数将标签沿圆周精准定位。最终成果兼具视觉美观与无障碍支持,但仍留有改进空间,如自动计算百分比、自动生成配色等。

author Juan Diego Rodríguez Trying to Make the Perfect Pie Chart in CSS | CSS-Tricks
#优质博文 #CSS #性能优化 #Safari #前端 #AI #调试
A Broken Heart 太有乐子了,一个表情符号导致页面加载速度变慢 100 倍的调试故事,Safari 又是 Safari(

AI 摘要:作者讲述了一次离奇的前端性能调试经历,网页仪表板在 Safari 下的加载时间从 1 秒激增至 10 秒。通过性能分析和 AI 辅助的二分查找法,最终定位问题根源为一个使用了 Noto Color Emoji 字体的心形表情符号(❤️)。该字体在 Safari 上的特定渲染路径导致了极高的布局耗时,文章对此进行了技术复盘并给出了临时解决方案。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 问题发现与初步排查
• 作者发现网页仪表板加载时间异常增加,初步怀疑是 React 框架的性能问题。
• 使用 Safari 性能分析器排查后,发现 CPU 时间主要消耗在 Layout 阶段,而非 JavaScript 执行或网络请求。
• 排除了服务器延迟、第三方脚本等因素,确认问题具有浏览器特异性。

2. 定位核心故障点
• 利用 Claude(AI 编程助手)进行代码二分查找,迅速隔离出导致性能下降的代码段。
• 发现“发送反馈”按钮中新增的一个 ❤️ 表情符号是罪魁祸首。
• 测试显示,移除该表情后布局仅需 2ms,保留则需 1600ms,性能差距达百倍。

3. 技术深度解析
• 问题源于项目引入了 Google 的 Noto Color Emoji 字体,旨在解决 Linux 环境下的表情渲染一致性。
• 该字体依赖 COLRv1 标准,在 Safari 中回退到 SVG 渲染时触发了 CoreSVG 层面的性能 Bug。
• 创建最小复现案例证实:仅引入该字体并渲染单个字符即可导致 Safari 26.2 出现严重卡顿。

4. 解决方案与反思
• 临时解决方案:在 CSS 中将 Apple Color Emoji 优先级置于 Noto Color Emoji 之前,避免在苹果平台触发该 Bug。
• 对 AI 编程工具的辩证思考:AI 虽然极大加速了 Bug 定位和复现过程,但其建议引入的字体库也是导致该问题的根源,体现了 AI 工具的高效与风险并存。


author Allen Pike A Broken Heart
#优质博文 #前端 #React #tools
TanStack 团队发布新库 TanStack Hotkeys,解决键盘快捷键开发中常见的跨平台、作用域冲突、输入框聚焦忽略等“小坑”,提供类型安全(Type-safety)、快捷键序列识别、状态追踪及 React 等框架适配器,并集成 Devtools 插件提升开发体验。

AI 摘要:TanStack 团队发布新库 TanStack Hotkeys,致力于简化 Web 应用中键盘快捷键的实现。该库解决了开发者常遇到的跨平台修饰键差异、event.key 与 event.code 的选择、快捷键冲突与作用域管理、在文本输入框聚焦时自动忽略快捷键、以及注册与清理逻辑等复杂问题。它提供类型安全的模板字符串 API、支持快捷键序列检测与按键状态追踪,并为 React 等主流框架提供适配器。此外,官方还推出配套的 TanStack Devtools 插件,可实时查看已按下的按键、注册的快捷键及其作用域和配置,显著提升调试效率。


author TANSTACK(Twitter@tan_stack)
#优质博文 #CSS #前端 #UX #React #设计 #tools
Sanity 团队开发了 React 组件 <LogoSoup /> 解决网页中多品牌 Logo 排列时因尺寸、比例与视觉重量不一致导致的“Logo Soup”混乱问题。
The logo soup problem (and how to solve it

AI 摘要:文章深入剖析了在网页或应用中展示多个合作方 Logo 时常见的“Logo 汤”问题——即不同 Logo 因原始尺寸、宽高比(aspect ratio)、视觉密度(visual weight)和内边距(padding)差异,导致排版混乱、视觉失衡。作者指出,手动调整既耗时又不可持续,提出通过数学公式(Proportional Image Normalization Formula)结合图像分析技术,实现 Logo 的自动视觉比例归一化。为此,Sanity 团队开发了 React 组件 <LogoSoup />,能自动处理 Logo 的尺寸缩放、内容裁剪、密度补偿与光学对齐(optical alignment),并支持与 CMS(如 Sanity)集成,使非技术人员也能轻松维护 Logo 列表。


author Rostislav Melkumyan
#优质博文 #前端 #HTML #WCAG
You might not need role="presentation"

AI 摘要:本文通过规范解读与真实代码案例,指出开发者常误将 role="presentation" 当作 aria-hidden="true" 使用,从而错误地移除语义却保留内容,导致可访问性问题。作者强调该属性仅在极少数场景(如布局表格、标签页组件、菜单模式)中合理,并建议优先使用语义化 HTML 或 aria-hidden 替代。多数误用可通过删除该属性并优化结构解决。


author Steve Frenzel You might not need role=
#优质博文 #JavaScript #新特性 #前端
It’s about to get a lot easier for your JavaScript to clean up after itself

AI 摘要:本文介绍了 JavaScript 的“显式资源管理”(Explicit Resource Management)提案,该提案旨在标准化资源清理流程。作者 Mat Marquis 以幽默风格阐述了当前资源释放方式的混乱现状,并指出新特性 [Symbol.dispose] 和 using 关键字如何提供统一、可预测的清理机制。前者为对象定义标准清理方法,后者在变量作用域结束时自动调用该方法,从而避免资源泄漏。该提案已进入 TC39 Stage 3,在除 Safari 外的主流浏览器中已可试用。


author Mat Marquis It’s about to get a lot easier for your JavaScript to clean up after itself
#优质博文 #前端 #移动端 #性能优化
Mobile performance: How to make your website mobile friendly:本文探讨了网站在移动端性能低下的深层原因,并提供了针对图片、JavaScript、CSS 及第三方脚本的实战优化方案。

AI 摘要:文章指出移动设备由于硬件性能(Processing Power)、内存限制及不稳定的网络环境,面临比桌面端严峻得多的性能挑战。即使通过了桌面端的性能审计,移动端仍可能因为 JavaScript 阻塞、大型图片资源及布局偏移等问题导致用户流失。作者建议通过实验室数据(Lab Data)与现场数据(Field Data)结合的方式进行监控,并详细介绍了使用响应式图片(Responsive Images)、延迟 JavaScript 执行、提取关键 CSS(Critical CSS)以及对第三方脚本进行节流(Throttling)等具体优化手段,以提升用户的感知速度(Perceived Speed)。


author Jakub Andrzejewski Mobile performance: How to make your website mobile friendly | DebugBear
#优质博文 #前端 #JavaScript #国际化
A Percise Parser:本文介绍了一个因硬编码地区数值格式(Locale Formatting)并使用拙劣的字符串操作,导致国际化失效的 JavaScript 解析器(Parser)案例。

AI 摘要:文章讲述了一家德国公司在国际化扩张过程中遭遇的技术故障,其根源是一个名为 handleInput 的 JavaScript 数值解析函数。该函数不仅硬编码了德国本地的数字格式(如用点号作为千分位、逗号作为小数点),还通过一系列极其混乱的字符串分割(Split)、拼接和隐式类型转换来处理精度。这种缺乏通用性且逻辑脆弱的代码最终被具有区域感知(Locale-aware)的标准解析器所取代。


[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 背景与问题发现
• 一家德国公司在业务向国际市场扩张时,系统在其他地区(Locale)频繁崩溃。
• 工程师 Thomas 追踪到问题核心是一个处理数值输入的“精确”解析器。
2. 拙劣的代码逻辑分析
格式清理:函数首先手动剥离正号(+),并将点号(.)作为千分位符直接删除,这在非德语区会导致错误。
混乱的精度处理:代码通过 indexOf(',') 寻找小数点,然后进行复杂的字符串分割与整数解析(parseInt)。
隐式类型转换陷阱:利用 JavaScript 的特性,将字符串类型的整数与数值类型的整数相加,导致了非预期的字符串拼接(Concatenation),最后再除以 100 来恢复数值。
输出不一致:根据输入条件的不同,函数有时返回数值类型,有时却保留为字符串,缺乏一致性。
3. 解决方案与反思
• 修复工作本身并不复杂:Thomas 删除了冗余逻辑,改用支持区域感知的标准数值解析器。
• 真正的挑战在于理解原始开发者编写这段奇葩代码的初衷和逻辑。


author Remy Porter
#优质博文 #前端 #Vite #Rolldown #工程化 #新动态
What’s New in ViteLand: January 2026 Recap
VoidZero 2026 年 1 月回顾
1. 品牌与设计统一(Unified Design)
• 实现了 VoidZero 旗下所有项目(Vite, Vitest, Rolldown, Oxc)的视觉身份统一,发布了全新的官网和 Logo。
• 更新了 Vite 的启动模板(Starter Templates),将新品牌标识内置其中。
• 强调了工具链的深度集成:Vite 8 在底层直接使用 Rolldown 和 Oxc,实现了一致的开发者体验。

2. 核心项目进展(Project Updates)
• Vite:自 2020 年发布以来,累计下载量超过 30 亿次;React 服务端组件(React Server Components, RSC)插件进行了优化,以支持 TanStack Start 等框架。
• Vitest:启动 4.1 测试版(Beta),引入测试标签(Test Tags)功能,并支持通过禁用 viteModuleRunner 选项在脱离 Vite 的情况下运行。
• Rolldown:正式达成候选发布版(Release Candidate, RC)里程碑,API 进入稳定阶段;推出“Lazy Barrel Optimization”,在 AntDesign 等场景下可减少 92% 的模块编译,提速 2 倍。
• Oxc:Oxlint 支持 oxlint.config.ts 动态配置;Oxfmt 实现了与 Prettier 100% 的一致性(Conformance),并新增了 Tailwind CSS 类名排序功能。

3. 社区动态与生态(Community & Events)
• 榜单表现:在 2025 JavaScript Rising Stars 榜单中,Vite、Oxc、Rolldown 和 tsdown 均名列前茅。
• 生态迁移:Hugging Face、Turborepo 和 Lichess 等知名项目宣布从 ESLint/Prettier 迁移至 Oxlint/Oxfmt。
• 周边工具:社区推出了基于 Oxc 的代码体积优化工具 jsshaker 以及 Oxlint 的终端用户界面工具 oxlint-tui。
What’s New in ViteLand: January 2026 Recap
#优质博文 #tools
互联网档案馆发布插件,解决 40% 的互联网死链问题 - 小众软件:互联网档案馆(Internet Archive)推出了 WordPress 插件 Link Fixer,旨在解决互联网日益严重的“链接腐化”(Link Rot)问题。该插件通过自动检测失效的 URL(如 404 错误),并引导用户访问 Wayback Machine 中存储的历史网页快照,据称能修复约 40% 的死链。

居然是 WordPress 插件( 互联网档案馆发布插件,解决40%的互联网死链问题 - 小众软件
#优质博文 #前端 #CSS #锚点定位 #course
Drawing Connections with CSS Anchor Positioning - Roland Franke
锚点定位真好玩儿吧:在无需 JavaScript 的情况下实现 UI 元素(如评论与其回复)之间的视觉连线。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
• 核心挑战: 在 CSS 中视觉化连接相关元素(如评论线、Tooltip 工具提示)通常很棘手,传统方案往往依赖 JavaScript 计算、额外的标签或不稳固的布局假设。
• 锚点定位机制:
• 使用 anchor-name (锚点名称) 为一个元素命名作为参考点。
• 使用 anchor-scope (锚点作用域) 限制锚点名称的影响范围,确保组件的独立性。
• 在另一个元素中使用 anchor() (锚点函数) 获取参考元素的边界位置(如 start, end, center)。
• 代码实现:
• 通过为 .comment 和 .reply 定义锚点名,在回复的 ::after 伪元素中利用 inset 属性引用这些锚点,从而精确绘制连接线。
• 结合 Logical Properties (逻辑属性) 如 inset-block-start,使布局能够自适应不同的语言和书写方向。
• 技术优势:
• 无需 JavaScript: 减少了脚本负担,提升了性能。
• 布局感知: 当内容增长或容器变动时,连接线会自动更新位置。
• 代码简洁: 减少了冗余的 Wrapper (包装) 元素。
• 浏览器兼容性: 目前处于 Baseline: Newly available (基线:新近可用) 阶段,主要在最新版本的 Chromium 系浏览器中得到支持,建议作为 Progressive Enhancement (渐进增强) 使用。


author Roland Franke Drawing Connections with CSS Anchor Positioning - Roland Franke
#优质博文 #前端 #CSS #JavaScript #新特性 #Chrome
New to the web platform in January
汇总了 2026 年 1 月 Web 平台的重大进展,重点介绍了 Chrome 144 和 Firefox 147 稳定版的发布。其中,CSS 锚点定位 (CSS Anchor Positioning) 和 Navigation API 随着 Firefox 的支持正式达到 Baseline Newly Available 状态。此外,Chrome 144 引入了期待已久的 Temporal API、声明式的 <geolocation> 元素以及用于自定义页内搜索样式的 ::search-text 伪元素

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 稳定版浏览器发布(Stable browser releases)
• Baseline 状态更新:随着 Firefox 147 的发布,CSS 锚点定位 (CSS Anchor Positioning) 和 Navigation API 现已在所有主要引擎中可用,正式进入 Baseline 阶段。
• CSS 锚点定位 (CSS Anchor Positioning):允许元素相对于“锚点”元素进行定位,适用于工具提示 (Tooltips)、菜单和弹出层。
• Navigation API:提供了一种现代化的方式来启动、拦截和管理应用程序中的导航,是单页应用 (SPA) 的核心增强。
• Temporal API:Chrome 144 引入了这一重磅 JavaScript API,作为 Date 对象的现代替代方案,提供更强大的日期和时间处理功能。
• 声明式 <geolocation> 元素:Chrome 144 新增了由用户激活的地理位置控制控件,简化了权限流程并减少了对复杂 JavaScript API 的依赖。

2. CSS 与样式增强(CSS Enhancements)
• ::search-text 伪元素:Chrome 144 支持自定义浏览器“页内查找”结果的样式,类似于 ::selection。
• caret-shape 属性:开发者现在可以指定文本插入光标的形状,如条状 (bar)、块状 (block) 或下划线 (underscore)。
• 视图过渡 (View Transition) 增强:Firefox 147 开始支持单页应用 (SPA) 的视图过渡类型识别,并支持通过 Document.activeViewTransition 获取当前活动的过渡对象。

3. Beta 版预览与未来动态(Beta browser releases)
• Chrome 145 Beta:引入了 text-justify 属性、多列布局改进(column-wrap 和 column-height)以及可自定义的 <select> 列表框。
• Firefox 148 Beta:支持 Location.ancestorOrigins,用于检测文档是否被嵌入到 <iframe> 中以及被哪些站点嵌入。


author Rachel Andrew New to the web platform in January  |  Blog  |  web.dev
#优质博文 #前端 #CSS #锚点定位 #layout #course
Solving Shrinkwrap: New Experimental Technique
好文,利用 CSS Anchor Positioning(锚点定位)和 Scroll-Driven Animations(滚动驱动动画)解决网页排版中“自动换行导致的容器宽度无法自动收缩(Shrinkwrap)”这一经典难题。

AI 摘要:本文提出了一种创新的 CSS 实验性方案,旨在解决困扰开发者多年的“Shrinkwrap”难题:当块级元素内的文本自动换行时,容器宽度依然占据最大可用空间而非紧贴文本内容的现象。
作者 Roman Komarov 通过巧妙结合 Anchor Positioning(锚点定位)进行尺寸测量,并利用 Scroll-Driven Animations(滚动驱动动画)将测量值跨层级传递给父元素,从而动态调整容器尺寸。尽管该技术在 HTML 结构上有一定要求且目前仍处于实验阶段,但它为实现真正的紧凑包裹效果(如聊天气泡、自适应提示框等)提供了全新的纯 CSS 路径。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 核心挑战与背景 (The Problem)
• 解释“Shrinkwrap”问题:当元素内的内容(如文本)自动换行时,CSS 的 shrink-to-fit 算法通常会让容器扩展到最大可用宽度,导致视觉上出现多余的空白。
• 回顾该问题在 CSS 规范(CSSWG)中长达十年的讨论,以及 text-wrap: balance 等新属性如何凸显了这一缺陷。

2. 技术实现原理 (The Base Technique)
• 结构设计: 采用四层嵌套 HTML 结构,包括容器、内容包装器、源元素和探测元素 (probe)。
• 远程测量 (Remote Dimension Measuring): 利用 Anchor Positioning(锚点定位)来确定内部行内元素的边界。
• 数值传递: 结合 Scroll-Driven Animations(滚动驱动动画)和自定义属性(CSS Variables),将测量到的像素值转换成可以在父元素中使用的数值,从而动态设置 inline-size(行向尺寸)。

3. 代码实现与 API (Code & Limitations)
• 展示核心 CSS 代码,利用 @property 定义变量,通过 animation-range 和 view-timeline 实现尺寸捕捉。
• 使用限制: 元素必须仅包含 Phrasing Content(短语内容,即行内元素);目前主要在 Chrome 和 Safari 中运行,且 Safari 存在某些实验性 Bug。
• API 定义: 提供 --sw-limit(限制宽度)和 --sw-padding(间距调整)等自定义属性。

4. 进阶复杂场景 (Complex Content)
• 多锚点策略 (Multiple Explicit Anchors): 演示如何处理具有多个 Flex(弹性布局)或 Grid(网格布局)项的容器包裹。
• 链式锚点 (Chained Anchors): 针对不确定数量的项目,提出一种基于容器查询(Container Queries)和锚点链的自动化测量方案(目前仅 Chrome 支持较好)。
• 内容重复法: 探讨解决导航菜单等具有复杂相互依赖关系的布局方案。

5. 实际应用案例 (Use Cases)
• 聊天气泡 (Chat Bubbles): 让气泡背景完美贴合换行后的文本,保持美观的视觉边距。
• 表单分组标题 (Fieldsets and Legends): 解决 legend 标签在换行时导致的边框对齐问题。
• 覆盖图注 (Overlay Image Captions): 实现图片上的半透明遮罩背景随文本长度动态收缩。
• 提示框 (Tooltips): 优化设计系统中的气泡提示,使其在不同文本长度下都能保持紧凑。

6. 总结与未来趋势 (What's Next)
• 作者呼吁浏览器厂商提供原生的 CSS 属性或函数来简化这一过程。
• 强调简单场景的解决方案已趋于成熟,而跨依赖的复杂布局仍是未来探索的方向。


author Roman Komarov
#优质博文 #前端 #性能优化 #JavaScript
The Browser Hates Surprises

AI 摘要:文章指出,浏览器的渲染引擎实际上是一个高效的约束求解器。当开发者中途“惊吓”浏览器(如延迟加载图片、动态插入滚动条等)时,会强制触发回流(Reflow),导致累积布局偏移(CLS)和用户体验的卡顿(Jank)。作者通过对比实验,提出了四种具体的优化方案:利用 scroll-margin-top 处理粘性布局遮挡、使用 scrollbar-gutter 预留滚动条空间、配置 aspect-ratio 预留图片位置,以及通过 Promise.all 编排数据加载。核心观点是:优化不仅是为了更快的加载,更是为了实现更平稳(Calm)的渲染。


author Durgesh Rajubhai Pawar The Browser Hates Surprises
#优质博文 #前端 #CSS
CSS @scope: An Alternative To Naming Conventions And Heavy Abstractions

AI 摘要:本文探讨了在复杂前端界面开发中,传统 CSS 命名规范(如 BEM)以及现代抽象工具(如 Tailwind 或 CSS-in-JS)的局限性。作者重点介绍了现已达成 Baseline 兼容的 CSS @scope 特性。@scope 允许开发者在不牺牲 CSS 级联(Cascade)和继承特性的前提下,实现精确的样式隔离。通过支持“甜甜圈作用域(Donut Scoping)”和引入邻近性(Proximity)原则,@scope 有效解决了样式泄露和特异性(Specificity)战争问题,为构建现代、可维护的 UI 提供了一种更符合原生 Web 标准的替代方案。


author Blake Lundquist CSS @scope: An Alternative To Naming Conventions And Heavy Abstractions — Smashing Magazine
#优质博文 #前端 #CSS #grid #新特性
CSS Bar Charts Using Modern Functions | CSS-Tricks:本文介绍了如何利用 CSS 现代函数 sibling-index() 和升级后的 attr() 函数(可以接受 data- 属性),以更简洁、高效的方式构建纯 CSS 柱状图。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 核心技术原理 (Core Technical Principles)
• 使用 display: grid 创建图表容器,并通过 grid-template-rows: repeat(100, 1fr) 建立百分比基准。
• 引入 sibling-index() 函数:自动为列表项分配连续的 grid-column 索引,无需手动编写选择器或 CSS 变量。
• 引入增强版 attr() 函数:直接从 HTML 的 data-value 属性中读取数值,并将其转换为 CSS 可用的 <number> 类型,用于控制 grid-row 的跨度 (span)。

2. 自动布局实现 (Automatic Layout Implementation)
• 详细拆解 sibling-index() 的工作方式:如何智能生成网格顺序,减少对 nth-child 等样式的依赖。
• 解释 attr(data-value number) 的类型转换功能:如何将字符串属性无缝转换为网格行数。
• 探讨浏览器兼容性:目前在 Chrome 和 Safari 中已有支持,但 Firefox 和部分移动端浏览器仍待完善。

3. 多样化图表应用 (Diverse Chart Applications)
• 纵向柱状图:通过调整 grid-row 的起始和结束位置改变增长方向。
• 标记图表 (Marker Charts):跳过完整的柱条,仅在特定网格点显示标记元素。
• 横向柱状图:交换行与列的逻辑,实现水平方向的数据展示。

4. 历史回顾与演进 (Historical Evolution)
• 对比 2015 年至 2022 年间的传统图表实现方法(如利用伪元素、手动 Grid 布局及 CSS 自定义属性)。
• 强调新技术如何通过减少“黑科技” (Hacks) 和冗余代码来优化开发流程。


author Preethi CSS Bar Charts Using Modern Functions | CSS-Tricks
#优质博文 #CSS #动画 #前端 #新特性
Elastic/Bouncy Text Effect:仅使用纯 CSS 实现一种有趣的悬停弹跳文字动画。目前该效果属于实验性特性,仅支持 Chrome 浏览器。

AI 摘要:这篇文章介绍了如何仅使用纯 CSS 实现一种有趣的弹性文字(Elastic/Bouncy Text)效果。作者 Temani Afif 通过组合使用最新的 CSS 特性,如 shape() 函数、 sibling-index() / sibling-count() 索引函数以及 linear() 缓动函数,实现了文字在悬停时的动态曲线跳动。虽然该技术目前仅支持 Chrome 浏览器且对 HTML 结构有特定要求(如每个字母需独立包装并使用等宽字体),但它展示了现代 CSS 在路径动画和动态计算方面的强大能力。


author Temani Afif Elastic/Bouncy Hover Effect
#优质博文 #HTML #性能优化 #前端
Performance-Optimized Video Embeds with Zero JavaScript

AI 摘要:本文介绍了一种利用原生 HTML 标签 <details> 和 <summary> 来优化视频嵌入(Video Embeds)性能的创新方法。通过这种方案,开发者可以在完全不使用 JavaScript 的情况下实现视频的按需加载(Lazy Loading),有效降低页面初始加载时的资源消耗,显著提升首次内容绘制(First Contentful Paint, FCP)和最大内容绘制(Largest Contentful Paint, LCP)等性能指标。该方法不仅能防止累积布局偏移(Cumulative Layout Shift, CLS),还具备原生辅助功能支持,是替代传统重型第三方视频插件的高效方案。


author Stefan Bauer
 
 
Back to Top