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

图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
#demo #codepen #动画 #CSS #SVG #设计
404 Error Face:Jon Kantner 基于 Camo Creative 的设计,将 404 错误页转为纯 CSS 和 SVG 的循环动画,用趣味视觉缓解用户体验挫败感。
#优质博文 #UI #UX #交互设计 #动画 #设计 #前端
You Don't Need Animations

AI 摘要:文章探讨了 UI 动画在交互设计中的价值与风险,提出动画必须有明确目的,且要考虑交互频率与速度感知。作者强调:合适的动画能提升可预测性与愉悦感,不合理的动画则会破坏效率与信任。有时,最佳的“动画”就是没有动画。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 动画的双刃性
• 正确使用动画可让界面更自然、流畅、愉快
• 滥用动画则会使界面显得缓慢、不确定,甚至损害用户信任

2. Purposeful Animations(有目的的动画)
• 动画需服务于具体功能或信息传达,而非纯粹装饰
• 案例:Linear 用动画展示功能逻辑;按钮点击缩放增强响应感
• 动画可营造 delight(愉悦),但仅适合低频使用,避免变成负担

3. Frequency of Use(使用频率)
• 高频操作(如 Raycast 命令输入、键盘快捷键)不应使用动画,否则会拖慢效率
• 低频操作可适度加入动画,提高体验的独特性和愉悦感
• hover 或菜单切换等高频交互场景更适合零动画或极快动画

4. Perception of Speed(速度感知)
• 动画速度需足够快,保持用户与界面的即时连接
• 一般 UI 动画时长应低于 300ms
• 案例:下拉菜单在 180ms 内更灵敏,tooltip(提示框)应有初始延迟但切换时不应再延迟

5. 设计原则与结论
• 动画不是必然元素,而是用户体验的加速器或负担
• 最佳实践:以用户需求为导向,基于目的、使用频率和性能感知来判断是否加入动画
• 有时,没有动画,才是最好的设计


author Emil Kowalski Emil Kowalski
#趣站 #设计
太美了!

诗人 David Whyte 的官网,以 WebGL 呈现水彩画般的互动质感,创造独特的艺术体验。介绍

网站地址:https://davidwhyte.com/experience/
#优质博文 #css #前端 #设计 #color
What You Need to Know About CSS Color Interpolation | CSS-Tricks

AI 摘要:这篇文章系统介绍了 CSS 中的颜色插值 (color interpolation) 概念,解释了其在渐变 (gradient)、过渡 (transition)、动画 (animation)、颜色混合 (color-mix) 等场景中的应用。文章重点区分了矩形色彩空间 (rectangular color space) 与极坐标色彩空间 (polar color space),并详细阐述了色相插值 (hue interpolation) 的四种方法(shorter / longer / increasing / decreasing),展示了如何通过不同插值策略影响渐变、颜色过渡以及动画效果,从而为网页设计实现更自然、更富表现力的色彩体验。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 颜色插值的基础概念
• 定义:在两个颜色点之间计算中间颜色的过程。
• 作用:生成独特色彩、改进渐变、增强动画与过渡效果。
• 典型示例:利用 oklch() 在 CSS 动画中平滑过渡。

2. 应用场景与支持插值的 CSS 功能
• 所有渐变函数 (linear-gradient, conic-gradient 等)。
• color-mix() 函数:可指定色彩空间和插值方法。
• 动画 (animation) 和过渡 (transition)。
• 图像滤镜 (filter)。
• 相对颜色语法 (relative color syntax)。

3. 插值语法与规则
• 一般形式:
color-mix(in <color-space> <hue-interpolation-method>, color1, color2)。
• in 关键字:用于指明插值的色彩空间。
• <color-space>:包括矩形与极坐标空间。
• <hue-interpolation-method>:定义色相插值方式 (shorter / longer / increasing / decreasing)。

4. 色彩空间分类
矩形色彩空间 (Rectangular color space)
• 以直角坐标 (XYZ 轴) 形式描述,如 srgb, lab, display-p3。
极坐标色彩空间 (Polar color space)
• 以圆柱坐标形式表示,三个值分别是明度 (lightness)、彩度 (chroma)、色相 (hue)。
• 插值时色相是角度,因而需定义旋转方向。

5. 色相插值 (Hue Interpolation) 四种方式
shorter:沿最短路径过渡(默认)。
longer:沿最长路径过渡。
increasing:始终顺时针方向过渡。
decreasing:始终逆时针方向过渡。
• 类比时钟:类似指针从一个刻度旋转到另一个刻度,可以走近路或远路,也可强制顺/逆时针。

6. 实际应用场景
• 渐变 (gradient):利用色相插值生成更自然的平滑过渡。
• 颜色混合 (color-mix):可指定色彩空间并控制过渡方向,获得更独特的混色效果。
• 动画 (animation):通过关键帧在不同色值之间平滑过渡,展现动态的色彩体验。


author Sunkanmi Fafowora What You Need to Know About CSS Color Interpolation | CSS-Tricks
#优质博文 #设计 #UX #apple #iOS
#92 Liquid Glass 之外 Apple 的改变

很有意思的副标题:劝 Apple 牢记初心,不忘使命,力戒形式主义、官僚主义,坚持实事求是的思想路线,树立正确设计观,真抓实干,改变作风

AI 摘要:本文深入分析了 Apple 在最新系统中引入的 Liquid Glass 材质与新视觉设计系统,指出虽然在界面质感上有一定突破(折射、HDR 高光、动态层级效果),但在实际交互和系统适配上存在明显不足:iOS 标签栏和工具栏设计复杂化、macOS 工期仓促导致界面割裂、Safari 与相机等核心 App 出现交互违和感。作者认为 Apple 为了设计形式感而牺牲了过往的易用性,这种“视觉优先”的改动可能是 Beta 阶段的过度尝试。最后总结:Apple 借由 Liquid Glass 等 shader 技术试图确立设计新高度,但缺乏完整生态适配,反而让用户体验受到冲击。


author fenx #92 Liquid Glass 之外 Apple 的改变
#优质博文 #CSS #设计 #前端 #小知识
cool,现在只需要一个 shape-outsideshape-image-threshold 就可以实现这样的图像 Alpha 通道环绕效果了。
以及,CSS shade-* 的支持已经 Baseline Widely available 广泛可用了。

Getting Creative With Images in Long-Form Content | CSS-Tricks

AI 摘要:本文探讨了如何在长篇内容(long-form content)中创造性地使用图片。作者认为图片不仅是插图工具,更能影响页面节奏、阅读体验和用户情绪。通过打破网格(grid)、使用全幅图像(full-bleed)、模块化布局(modular grid)、CSS Shapes、创意化图注(caption)以及留白(whitespace)管理,图片可以成为叙事与设计的一部分,从而提升文章的表现力与吸引力。

1. 引言:长内容与图片的关系
• 传统的内联矩形图片容易显得功能化但缺乏灵感
• 图片在长文本中应参与节奏与气氛塑造,而不是“附加元素”

2. 打破与利用 Grid(网格系统)
• 网格让排版平衡、整齐,利于阅读,但可能过于呆板
• 偶尔打破网格:扩大图片尺寸、偏移位置,可突出重点并增加灵动感

3. 图像宽度的处理:Text-width vs Full-bleed
• Text-width(跟随文本宽度):适合信息图、图表,保持阅读秩序
• Full-bleed(全幅铺满):制造视觉冲击力,打破阅读节奏,但不可滥用

4. Modular Grid(模块化网格)展示多图
• 通过网格组织多张图片构成整体布局,而非单调堆叠
• 可以混合横幅与竖幅图,用大小对比制造层次感,突出相关性

5. CSS Shapes 与文本环绕
• 传统文本环绕矩形边框,可能与图片形状不匹配
• CSS shape-outside 可让文字依据图片轮廓流动,更加自然、富有- 有表现力
• 利用图片 alpha 通道直接定义形状,减少复杂路径

6. Captions(图注)的再设计
• 不必是小字附注,它们可以是故事叙述的主动元素
• 图注可放置在图片侧边、覆盖图片,甚至作为装饰化的 pull quote

7. Whitespace(留白)的作用
• 紧密留白:制造张力,适合多图组合
• 宽松留白:形成停顿,让内容节奏更舒缓
• 留白是页面呼吸感与层次控制的重要因素


author Andy Clarke
#设计 #CSS #前端 #UX #用户体验 #优质博文
少见的讲「设计稿」与「Web 实际实现」之间区别的博客,适合前端和设计一起观看(笑)
Web Design: What is the web capable of that is hard to express in design software?

AI 摘要:本文探讨了现代网页设计软件与真实 Web 技术能力之间的差距。作者 Chris Coyier 指出,设计工具产出的是网站的“静态图片”,而非可交互的真实产品,这导致许多 Web 固有的动态、响应式和交互特性难以在设计稿中表达。文章详细列举了如元素状态、颜色模式、CSS 变量、流式布局、可变内容和动画等多个方面,强调了这些特性在从设计到开发的“翻译”过程中容易失真或被忽略,并认为很大一部分设计工作实际上必须在浏览器中,通过代码来完成。

1. 动态性与交互状态
• 链接与按钮状态 (Link & Button States):设计软件通常只能展示元素的默认样式,但很难表现如 :hover (悬停)、:active (点击) 和 :focus (聚焦) 等重要的交互状态,导致这些状态在设计阶段常被忽略。
• 颜色模式 (Color Modes):浅色/深色模式或 Windows 高对比度模式等全局状态会影响整个设计的可见性,但设计工具通常难以系统性地支持这些多模式的设计与预览。
• 变量 (Variables):CSS 自定义属性 (Custom Properties) 具有级联 (Cascade) 和动态变化的特性,可以在 DOM 的任何层级被修改,这是静态设计工具基于图层的概念难以模拟的。
• 其他应用状态 (Other States):加载中 (Loading)、错误 (Error)、用户特定权限等各种应用状态,在设计工具中往往需要手动绘制多个画板来表示,容易遗漏且无法体现状态间的排列组合。
• 动画与过渡 (Animations & Transitions):从简单的悬停效果到复杂的动效,这些动态体验很难在静态设计稿中有效呈现和沟通,通常需要到开发阶段直接用代码实现和探索。

2. 响应式与流式布局
• 视口尺寸 (Viewport Sizes):设计工具通常采用几个固定断点(如手机、平板、桌面)来处理响应式设计,但这无法完全表达 Web 的流式 (Fluid) 特性,例如容器查询 (Container Queries)、元素的最小/最大宽度以及字体大小的平滑变化。
• 滚动与鼠标相关效果 (Scrolling & Mouse Movement):静态设计稿无法展示与滚动相关的效果,如 position: fixed (固定定位)、scroll-snapping (滚动吸附) 以及与滚动位置联动的动画等。
• 可变内容 (Variable Content):设计稿往往使用“理想情况”下的内容(Happy Path),而无法充分考虑真实世界中内容长度不一、内容缺失或多语言翻译后字符数量变化等情况,这可能导致最终布局被破坏。
• 单位与数学计算 (Units & Math):Web 拥有丰富的单位系统 (如 rem, vw, %) 和 CSS 数学函数 (如 calc(), min(), clamp()),它们是实现复杂流式布局的关键,而设计工具通常只提供固定的、无单位的数值,两者存在巨大鸿沟。

3. 特定设备与媒介
• 设备特定细节 (Device-Specific Details):设计稿难以模拟和测试触摸目标的大小、移动设备屏幕键盘的交互、不同设备的光标 (Cursor) 样式,以及在不同带宽下的体验差异。
• 媒体处理 (Media Handling):如何在设计中集成视频、音频或 3D 等复杂媒体,并在静态工具中准确传达其交互和表现,是一个巨大的挑战。


author Chris Coyier Web Design: What is the web capable of that is hard to express in design software?
#优质博文 #CSS #前端 #主题化 #color #设计
Thinking Deeply About Theming and Color Naming | CSS-Tricks

AI 摘要:本文深入探讨了前端开发中主题和颜色命名的设计实践及困惑,从流行 CSS 框架的色板设计现状、手动与程序化生成色板的方法谈起,剖析了颜色变量定义中的“语义命名”混乱,并提出了更灵活与语义化兼容的命名及管理方式,以支持更加多变且有辨识度的 Web 设计系统。


author Zell Liew Thinking Deeply About Theming and Color Naming | CSS-Tricks
#优质博文 #CSS #字体 #性能优化 #设计 #前端
Building my new website: A modern approach to font fallbacks with font property adjustments - Nic Chan

AI 摘要:本文是作者 Nic Chan 撰写的新网站构建系列的一部分,重点介绍了如何采用现代字体回退方法来优化网站性能,尤其是减少累计布局偏移(CLS)。作者详细阐述了利用在线工具调整 CSS 字体属性(如 size-adjust 等)以实现无缝字体切换的实践,并分享了新增艺术作品和工作展示区的设计与实现,包括使用 View Transitions 和容器查询来提升用户体验。

• 作者 Nic Chan 分享了此篇草稿延迟发布的原因,并感谢读者的支持。
• 介绍了网站新增的拖放功能(桌面端)和改进的窗口分层效果,强调了渐进增强(progressive enhancement)的应用,即在确保无 JS 可用性的基础上,通过 JavaScript 增强用户体验。
• 字体优化与回退 (Font Optimization & Fallbacks): 讨论了网站在字体加载时遇到的累计布局偏移(CLS)问题,特别是自定义字体 W95FA 较窄的特性。作者希望实现像素字体和抗锯齿字体之间的无缝切换。他利用了“Modern Font Stacks”提供的字体堆栈,并发现了一个名为“Font Fallback”的工具,通过调整 size-adjust、ascent-override 等 CSS 属性来创建视觉上无缝的字体回退效果,甚至为此修改了工具的源代码。
• 艺术作品展示 (Artwork Showcase): 作者决定在网站中添加艺术作品展示区,尽管这与专业无关。他受到 Josh Crain 网站的启发,并利用 View Transitions API 实现了窗口最大化时平滑的缩放和标题淡入效果,配合少量 JavaScript 进行状态管理和回退。
• 工作项目展示 (Work Projects Showcase): 面对多种图片尺寸和可选标题的复杂布局挑战,作者采取了非对称设计,并限制了三种核心布局模式,避免每次新增案例都需编写新样式。此处完美运用了容器查询(Container Queries)来适应可用窗口空间内的尺寸变化,并结合 CSS Grid 实现有趣的重叠布局和纹理效果。


author Nic Chan
#优质博文 #液态玻璃 #设计
Getting Clarity on Apple's Liquid Glass

AI 摘要:本文详细探讨了 Apple 在 WWDC 2025 上推出的全新设计美学“Liquid Glass”(液体玻璃),分析了其设计理念、技术特点以及引发争议的焦点。文章从 Apple 官方介绍、设计师和开发者的反馈、无障碍性问题到社区的实验和教程,全面梳理了 Liquid Glass 的影响与应用前景。作者中立看待这一设计,既对其创新性表示兴趣,又对其可读性和无障碍性表达了担忧,同时整理了大量相关资源和讨论,为读者提供了深入了解这一设计趋势的入口。


author Geoff Graham Getting Clarity on Apple's Liquid Glass | CSS-Tricks
#优质博文 #前端 #UX #设计 #落地页
We studied 100 dev tool landing pages—here’s what really works in 2025

AI 摘要: 本文通过对 100 多个开发者工具登陆页面进行深入研究,总结了 2025 年有效的设计与布局策略。作者 Anton Lovchikov(Evil Martians 设计负责人)分析了从 Linear 到 Vercel 等知名工具的页面,提炼出适用于早期产品的高效结构:包括英雄区、信任模块、功能展示、社交证明、支持模块和最终行动号召(CTA)。文章强调简洁设计、用户导向的故事叙述以及建立信任的重要性,同时提供了基于研究的开源模板,助力开发者快速构建登陆页面。

1. 引言与研究背景
• 介绍了研究的目的:帮助开发者工具创建者避免设计中的常见错误,快速构建有效的登陆页面。
• 研究对象为 100 多个开发者工具页面,涵盖从早期初创公司到成熟产品的案例。
• 提供了一个基于研究的开源模板,供快速部署使用。

2. 总体布局注意事项
• 核心原则:避免过度销售,注重简洁与巧妙设计。
• 大多数页面采用居中布局与最大宽度容器,确保可读性与开发速度。
• 少数页面采用全宽设计以突出高端感,但执行难度较高。

3. 英雄区(Hero Section)
• 设计趋势:居中布局,带有静态或动态产品展示及引人注目的 CTA。
• 视觉元素类型:动态 UI 演示、静态 UI 截图、可切换的多产品 UI、实时嵌入产品、代码片段或抽象插图。
• 附加元素:眉毛文本(Eyebrows)用于突出新发布或融资信息;顶部横幅传递更长信息。
• CTA 策略:主 CTA 醒目且具体,次 CTA(如查看文档)视觉上区分开。

4. 信任模块(Trust Block)
• 目标:通过展示客户 logo 或用户数据快速建立信誉。
• B2B 产品:展示知名客户 logo 或客户评价,常使用自动滚动轮播。
• 个人用户产品:突出数据指标(如 GitHub 星级、使用量)或奖项。

5. 功能展示模块(Feature Block)
• 核心:聚焦用户痛点与解决方案,而非单纯列举功能。
• 叙事方式:功能列表、任务导向故事、问题导向故事、大胆声明、使命陈述式叙事。
• 布局形式:全屏截图、棋盘式布局、图标文本、全宽卡片带、便当式网格、选项卡分组、步骤流程、富卡片设计、视频教程。
• 附加支持:包括“工作原理”说明、使用案例、兼容性与集成展示。

6. 社交证明模块(Social Proof Block)
• 策略:精选用户评价,注重相关性与正面反馈,通常位于页面底部。
• 呈现方式:简洁引用,包含用户头像、姓名及公司 logo。
• 创新模式:将用户评价与功能模块结合,增强上下文相关性。

7. 支持模块(Supporting Blocks)
• 非必需但常见模块:包括 FAQ、对比表格、定价信息、博客或更新日志预览。
• FAQ:以折叠式设计解答常见问题。
• 对比表格:突出产品优势,适用于竞争激烈的市场。
• 定价:简洁展示不同计划,常链接至单独页面。

8. 最终行动号召(Final CTA)
设计:醒目且独立的全宽模块,使用对比背景色与简短激励信息。
• 目的:抓住未在早期点击的访客,提供最后转化机会。
• 创新案例:嵌入日历小部件,便于直接预约沟通。

9. 快速部署工具
• 提供基于研究的无冗余模板,适用于开发者产品,支持 Webflow 和静态 HTML 版本。
• 鼓励读者免费获取并快速应用。


author Anton Lovchikov, Travis Turner We studied 100 dev tool landing pages—here’s what really works in 2025—Martian Chronicles, Evil Martians’ team blog
#优质博文 #AI #MCP #设计
Guide to the Dev Mode MCP Server

AI 摘要:本文详细介绍了 Figma 的 Dev Mode MCP Server(目前处于开放测试阶段)的功能、使用方法和最佳实践。Dev Mode MCP Server 通过 Model Context Protocol 提供了一个标准接口,使 AI 代理能够与 Figma 设计文件交互,直接将设计转化为代码,并提取设计上下文和组件信息。文章涵盖了如何启用服务器、配置客户端、提示工具使用以及优化设计文件和提示以获得更好的代码生成效果,旨在帮助开发者和设计团队更高效地进行设计到代码的工作流程。

功能与适用范围:
• Dev Mode MCP Server 目前为开放测试版,适用于 Professional、Organization 和 Enterprise 计划的 Dev 或 Full 座位用户。
• 需使用支持 MCP Servers 的代码编辑器(如 VS Code、Cursor、Windsurf、Claude Code)以及 Figma 桌面应用。
• 主要功能包括从 Figma 帧生成代码、提取设计上下文(如变量、组件、布局数据)以及通过 Code Connect 提高代码输出质量和一致性。

使用步骤
• 步骤 1:启用 MCP Server - 在 Figma 桌面应用中通过 Preferences 启用 Dev Mode MCP Server,服务器本地运行于 http://127.0.0.1:3845/sse
• 步骤 2:设置 MCP 客户端 - 根据不同代码编辑器(如 VS Code、Cursor、Windsurf、Claude)配置 MCP 服务器连接,涉及在设置中添加服务器 URL 并确保连接成功。
• 步骤 3:提示 MCP 客户端 - 通过选择 Figma 中的帧或层,或使用链接,提供设计上下文给 AI 客户端,并通过提示生成代码或提取信息。

工具与用法建议
• get_code - 用于生成代码,支持 React + Tailwind 默认输出,可通过提示自定义框架(如 Vue、HTML+CSS、iOS)或使用特定组件。
• get_variable_defs - 返回所选内容中使用的变量和样式(如颜色、间距、字体),帮助生成代码时引用设计令牌。
• get_code_connect_map - 提供 Figma 节点 ID 与代码库中对应组件的映射,确保设计到代码的无缝转换。
• get_image - 截取所选内容的屏幕截图以保留布局保真度,可在设置中启用或使用占位符。

Dev Mode MCP Server 设置
• 提供额外的偏好设置,如启用 get_image 工具、使用占位符、启用 Code Connect 以重用代码库组件。

MCP 最佳实践
• 结构化 Figma 文件 - 使用组件、变量、语义化命名、自动布局和注解以提供清晰的设计意图,确保生成的代码一致且符合设计系统。
• 编写有效的提示 - 清晰的提示可指导 AI 输出符合框架、文件结构或特定路径的代码,示例包括指定框架(如 SwiftUI、Chakra UI)或组件路径。
• 触发特定工具 - 如结果不理想,可在提示中明确指定工具(如 get_code 或 get_variable_defs )以获取更准确的上下文。
• 添加自定义规则 - 设置项目级指导规则(如布局优先级、文件组织、命名模式)以保持输出一致性,减少重复提示。
• 分解大型选择 - 将大屏幕拆分为小组件或逻辑块以提高生成速度和可靠性,避免上下文过多导致的错误或不完整响应。

注意事项
• 由于处于测试阶段,功能和设置可能不完整,可能遇到 bug 或性能问题。
• 用户可通过 Figma 内的反馈表单提供意见,帮助改进功能。


author Figma 官方文档
#demo #前端 #css #动画 #设计
经典键盘的实现!很酷

jhey ʕ•ᴥ•ʔ (@jh3yy):keypad w/ CSS + <img> layers 🧑‍🍳
.key { mask: url(keycap.png); }
.key:active img { translate: 0 20%; }
use keycap images as a mask for the container that they translate in
bonus: clip-path to clip the hit area + filter to style the keys 🤙


https://fixupx.com/jh3yy/status/1943132402315886934

不过这个没给demo链接,只是给了思路和展示。
代码什么的可以看看这个类似的。
Twitter | Github
#优质博文 #前端 #设计还原 #css #设计 #兼容性
讲究,太讲究了www
Matching drop shadows across CSS, Android, iOS, Figma, and Sketch

AI 摘要:本文详细探讨了在 CSS、Android、iOS、Figma 和 Sketch 等多个平台和设计工具中实现一致的阴影效果(drop shadow)的问题。作者通过对比不同平台的阴影渲染差异,指出模糊半径(blur radius)的处理方式是导致不一致的主要原因,并提供了具体的缩放因子(scale factors)来调整模糊半径,以实现跨平台的视觉一致性。文章还深入分析了各平台的渲染机制和技术细节,为设计师和开发者提供了实用的转换公式和指导。

1. 引言与问题背景
• 介绍了跨平台阴影效果不一致的问题,通过图片对比展示了 CSS、Android 和 iOS 渲染相同阴影参数时的差异(例如 Y 偏移 24px,模糊半径 24px 的阴影在各平台呈现不同)。
• 指出 Android 使用 setShadowLayer 而非 Material elevation,CSS 和 Android 阴影虽接近但仍有细微差异(Android 更模糊)。

2. 浏览器间的阴影一致性
• 讨论了 CSS 阴影在不同浏览器(Safari、Firefox、Chrome)中的表现,发现 box-shadow 在这些浏览器中渲染效果基本一致,截图以 Safari 为主。

3. 设计工具与 CSS 的对比
• 指出 CSS、Sketch 和 Figma 的阴影效果一致,但背景模糊(background blur)不在本文讨论范围内,仅聚焦于阴影效果。

4. 模糊半径的差异分析
• 阴影的参数中,位置偏移和颜色在各平台表现一致,唯独模糊半径的处理方式不同。
• 作者通过重新排列模糊测试结果,发现模糊半径存在 1×、2× 和 3× 的缩放模式,阴影主要集中在 1× 和 2× 范围内。

5. 缩放因子与技术细节
• 解释了 CSS 规范中模糊半径的标准差为模糊半径的一半,而 iOS 的模糊半径是 CSS 的两倍,因此 CSS 到 iOS 的缩放因子为 0.5×。
• Android 使用 Skia 渲染,模糊半径缩放涉及 1 / sqrt(3) 的因子,与 CSS 不完全一致(部分原因是早期 Safari 的影响)。
• 提供了详细的缩放因子表格,用于在 CSS、Sketch、Figma、Android 和 iOS 之间转换模糊半径,例如 CSS 到 Android 为 0.866×,iOS 到 CSS 为 2.0×。
• 通过调整后的对比图和色调分离(posterising)结果,展示了缩放后的阴影效果非常接近,尽管由于渲染方法和代码差异无法完全一致。

6. 应用与结论
• 研究目的是为 Pinwheel 工具导出 Android 和 iOS 阴影代码时提供正确的缩放因子,确保跨平台一致性。
• 总结了实现近似一致阴影的可行性,并感谢 Kit Grose 在审稿中提供的 Skia 代码注释支持。


author Bjango Team Matching drop shadows across CSS, Android, iOS, Figma, and Sketch
 
 
Back to Top