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

图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
#优质博文 #css #Unicode #前端 #字素簇 #动画
太酷了。
Project AIRI DevLog @ 2025.08.01Clustr

AI 摘要:本文由 Makito 首次在 Project AIRI 的 DevLog 分享,聚焦于如何在前端应用中处理和实现流式 UTF-8 字节流的文本动画,尤其是在聊天或语音转写等实时场景下正确分割和显示「字素簇」(grapheme cluster)。作者深入探讨了 Unicode 编码、多码点合成字符的边界难题,以及利用 Web API,如 TextDecoder、Intl.Segmenter,实现安全高效的字素簇流式提取,并介绍了自己的开源库 Clustr。文章结合了丰富的实例和交互组件,面向希望在项目中实现高质量文本动画及多语言兼容的前端开发者,具有较高参考价值。

1. 背景与动机
• 投稿者首次在 DevLog 发文,介绍参与 Project AIRI 过程。
• 动画文本在现代 UI(如聊天消息)中的作用和实现难点。
• 第三方库(Anime.js, splt, GSAP)在文本动画实现上的进展与现有不足。
• 项目的需求:需实时处理和动画化接收自 UTF-8 字节流的数据。

2. Unicode 基础与「字素簇」难题
• 码点(Code point)与 UTF-8 字节流的对应关系,字节组装所需注意事项。
• Unicode「字素簇」的定义,即多个码点合为视觉整体的最小文本单元。
• 通过实际 Emoji 和南亚文字示例,阐释组合字符的裸数据和视觉表现。
• 传统 Web API 如 TextDecoder 能将字节流还原为码点字符,但不足以分割复杂字素簇。

3. Web API 应用与完善方案
• 利用 TextDecoder.decode(stream选项)实现流式解码,拼接字符串缓冲区。
• 使用 Intl.Segmenter 拆分字符串为字素簇,支持多语言处理。
• 提出解决方案:因为流数据随时变化,需确保不完整的字素簇不被导出,因而采用「丢弃最后一个」策略缓冲输出,避免合成字符的过早显示。

4. 流式字素簇库 Clustr 的诞生
• 市场调研发现缺乏专门处理流式 UTF-8 字节流并输出字素簇的库。
• 作者自研 Clustr,核心代码不到100行,实现了上述需求。
• Clustr 能帮助前端实时渲染流式文本动画,兼容多语言复杂字符。

5. 互动组件与社区交流
• 提供探索字素簇组合和实时代码交互的小组件。
• 鼓励开发者参与 Project AIRI 相关 GitHub 仓库,共同讨论和改进工具。


author Makito
#优质博文 #CSS #demo #codepen #动画 #svg #webgl #液态玻璃
也是一个 Liquid Glass Web 实现合集 demo 整理,有几个实现的确实漂亮啊~
Liquid Glass on the Web

AI 摘要:本文深入探讨了 Apple 即将在其操作系统中全面采用的 Liquid Glass(液态玻璃)设计风格,并分析现有 web 技术如何实现这一视觉效果。作者梳理了 Liquid Glass 在网页端的多种实现方法,包括 CSS 的 backdrop-filter 和 SVG 滤镜(filter),并特别关注了该效果在可访问性(accessibility)上的挑战。文中还介绍了社区工具与实践案例,并指出 Liquid Glass 视觉语言强调的不仅是玻璃质感,还包含液体流动的动态感。


author Chris Coyier
#前端 #demo #动画 #css #codepen

jhey ʕ•ᴥ•ʔ(@jh3yy): number range slider using 3D CSS transforms
sometimes a shift in perspective unlocks a new solution
check the reveal👇
使用 3D CSS 转换的数字范围滑块
有时,视角的转变会解锁新的解决方案
检查显示 👇


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

https://codepen.io/jh3y/pen/xxvVWxN
#优质博文 #CSS #前端 #UX #动画
Scroll-Driven Sticky Heading

AI 摘要:本文详细介绍了如何使用 CSS 滚动驱动动画(Scroll-Driven Animations, SDA)创建一个随着用户滚动页面而动态变化的粘性标题效果。通过结合伪元素和滚动时间轴,作者展示了如何实现标题文本的动态切换和动画效果,同时兼顾了浏览器兼容性和无障碍访问。文章从基础的语义化标记开始,逐步深入到动画实现、兼容性处理及用户偏好考虑,最后鼓励读者发挥创意,探索 SDA 的更多可能性。

1. 引言与背景
• 介绍了滚动驱动动画(SDA)作为一种强大的工具,可以根据用户的滚动位置动态变换页面元素,增强网站的互动性和吸引力。
• 作者分享了通过 SDA 实现主标题(h1)文本随滚动变化的创意,并将在本文中逐步拆解实现过程。
• 强调效果仅在支持 SDA 的浏览器(如 Chromium 系)中有效,且提供了不支持时的静态回退方案。

2. 动画效果的初步解析
• 探讨了文本动画的核心原理,灵感来源于早期的打字机效果。
• 通过伪元素的 content 属性实现文本内容的动态切换,而无需依赖宽度动画或特定字体,保持灵活性。

3. 构建基础结构
• 从语义化标记入手,使用 <main> 和 <section> 结构,包含多个带有标题和内容的section(如“Primary Colors”主题)。
• 初始 CSS 仅做基础样式调整,确保内容静态、语义化和无障碍访问,为后续动画效果奠定基础。

4. 添加滚动驱动标题
• 在页面顶部添加一个额外的 <h1> 作为动画标题,并通过 aria-hidden="true" 确保其对屏幕阅读器不可见。
• 其他静态标题使用 .srOnly 类隐藏视觉呈现,但保留无障碍访问支持,确保语义完整性。

5. 兼容性处理
• 使用 @supports (animation-timeline: scroll()) 检查浏览器对 SDA 的支持,不支持时隐藏动画标题,显示静态内容。
• 确保无障碍技术和不支持 SDA 的浏览器用户仍能访问完整内容。

6. 实现粘性标题
• 通过 position: sticky 和 top: 0 让动画标题固定在视口顶部。
• 添加背景、边距等样式优化视觉效果,确保标题在滚动中清晰可见。

7. 关键帧与滚动位置
• 使用自定义脚本显示滚动进度百分比,帮助确定标题切换的精确位置(如 30%、60%、90%)。
• 通过伪元素的 content 属性和滚动时间轴,设置关键帧以切换标题文本。

8. 文本动画细节
• 清除动画标题的初始内容,使用伪元素动态填充文本。
• 设置 animation-timing-function: step-end,确保文本在指定关键帧处精准切换。
• 手动编写关键帧,逐步增减字符,模拟打字动画效果,增强过渡自然感。

9. 用户偏好与无障碍
• 考虑 prefers-reduced-motion 偏好,使用媒体查询禁用动画,提供静态替代方案,照顾对运动敏感的用户。
• 强调无障碍设计,确保内容对所有用户可访问。

10. 效果扩展与创意
• 提出动画标题的多样化实现,如固定部分文本,单独动画其余部分,或通过 SDA 改变颜色、背景等。
• 展示如何叠加多个滚动驱动动画,丰富视觉效果。

11. 总结与号召
• 强调 SDA 不仅是炫酷技巧,更是网页设计的革新工具,能显著提升用户体验。
• 鼓励读者尝试 SDA,探索创意可能性,并分享作品、想法或问题,激发社区交流。


author Amit Sheen
Scroll-Driven Sticky Heading | CSS-Tricks
#前端 #趣站 #tools #webgl #three #demo #动画
洗衣机酱是一个 3D 洗衣店,在这里图像会被清洗。一个使用 Three.js 构建的本地、无广告的背景移除器——快速、私密、有趣。


好可爱好有创意!
https://tools.dverso.io/bgremove/
Media is too big
VIEW IN TELEGRAM
#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
#Newsletter #前端 #动画 #css #tools #新特性
Smashing Newsletter #514: New CSS Techniques

AI 摘要: 本期 Smashing Newsletter #514 聚焦于 CSS 的最新技术和工具,介绍了多项创新功能和实用资源,包括 CSS 中的 if() 函数、锚点定位 API、缓动函数工具、阴影匹配技巧以及 CSS 渐变效果等。

1. CSS 新特性(Chrome 137):
• 介绍了 if() 函数,支持基于自定义属性值和样式查询编写逻辑样式,增强了 CSS 的逻辑控制能力。
• reading-flow 属性通过声明预期的焦点顺序提升键盘和屏幕阅读器的可访问性,解决视觉顺序与 DOM 源顺序不匹配的问题。

2. CSS 径向渐变创建 CSS 爆炸背景效果
• Chris Coyier 展示了如何仅用 CSS 创建爆发背景效果,利用 conic-gradient() 和硬性停止点的特性,结合径向渐变实现文本空间和视觉层次。

3. CSS 缓动函数工具(Easing Wizard)
• Matthias Martin 开发的 Easing Wizard 工具帮助开发者可视化和测试 CSS 缓动函数,支持多种类型(如 Bézier、弹簧、反弹等),并提供预设和代码导出功能。

4. 跨平台阴影匹配
• Marc Edwards 提供了一份阴影转换比例表,帮助开发者在 CSS、Android、iOS、Figma 和 Sketch 等平台间实现一致的阴影效果,尽管渲染差异无法完全消除,但可接近匹配。

5. CSS 锚点定位 API 工具
• Una Kravets 开发的 Anchor Position Tool 简化了锚点定位 API 的使用,通过可视化界面展示元素相对锚点的定位效果,并生成可直接使用的 CSS 代码。

6. HTML 输入图标样式修复
• Cassidy Williams 分享了一个解决暗模式下日期/时间输入图标不可见的技巧,利用 ::-webkit-calendar-picker-indicator 伪元素调整图标样式,支持滤镜、不透明度和自定义图像。


author Cosima Mielke (cm), Vitaly Friedman (vf), and Iris Lješnjanin (il) CSS Bursts with Conic Gradients
#优质博文 #svg #react #motion #动画 #css #demo #course

How to Create a Gooey Search Interaction with Framer Motion and React

AI 摘要:本文详细介绍了如何使用 Framer Motion 和 React 创建一个带有 Gooey 效果的搜索交互组件。作者受到动态岛动画的启发,将 Gooey 效果应用于搜索栏,打造了一个小型但有趣的交互体验。教程涵盖了 Gooey 效果的实现、SVG 滤镜的应用、Framer Motion 的集成、搜索状态管理、动画效果的优化以及针对 Safari 浏览器的兼容性处理,旨在激发开发者创意并提供实用指导。

1. Gooey 效果的创建:
• 介绍了 Gooey 效果的起源,基于 Lucas Bebber 的文章 The Gooey Effect
• 通过调整 SVG 滤镜中颜色矩阵的 alpha 通道值,实现自定义的 Gooey 效果。
• 提供了具体的代码示例,展示了如何使用 feGaussianBlur 和 feColorMatrix 创建滤镜效果。

2. 应用 Gooey 效果:
• 在主组件中通过 CSS 将 SVG 滤镜应用到父元素上。
• 提供了简单的代码结构,展示滤镜如何与 DOM 元素结合。

3. Framer Motion 集成:
• 使用 Framer Motion 为搜索栏添加动态动画效果,定义了四种状态(初始状态、搜索激活、搜索结果、加载中)来管理交互逻辑。
• 使用 AnimatePresence 组件实现搜索结果的集体展示和个体动画效果。
• 详细解释了 getResultItemVariants 和 getResultItemTransition 函数,用于控制搜索结果项的动画效果(如缩放、位移、模糊效果)。
• 动画设计注重细节,例如通过索引计算延迟实现顺序动画,并使用弹簧动画(spring)增加流畅性。

4. Safari 兼容性挑战:
• 提到 WebKit 对 SVG 滤镜的限制,作者通过 isUnsupported 布尔值对 Safari 浏览器进行了动画调整。
• 强调了兼容性问题的长期存在,并提供了针对性的解决方案。


author Oguzhan Tufenk
#优质博文 #前端 #css #动画 #新特性 #course
A guide to Scroll-driven Animations with just CSS

AI 摘要:本文详细介绍了如何使用纯 CSS 实现滚动驱动动画(Scroll-driven Animations),这是近年来 CSS 动画技术的一项重要进步。作者通过具体的代码示例和步骤,讲解了滚动驱动动画的三个核心组成部分:目标元素(target)、关键帧(keyframes)和时间轴(timeline),并重点介绍了两种新的时间轴类型——scroll() 和 view(),它们分别基于用户滚动行为和元素进入视口的行为触发动画。此外,文章还强调了动画对用户体验的影响,提醒开发者注意运动敏感性问题,并提供如何通过媒体查询(如 prefers-reduced-motion)优化动画以提升可访问性的建议。


author Saron Yitbarek A guide to Scroll-driven Animations with just CSS
#优质博文 #动画 #前端 #css #react #motion #svg #demo
喜欢这个~
Building an Infinite Marquee Along an SVG Path with React & Motion | CodeSandbox

AI 摘要:本文详细介绍如何使用 React、TypeScript 和 Motion(原 Framer Motion)库创建一个沿着自定义 SVG 路径无限滚动的跑马灯效果。作者从基础的 SVG 路径创建开始,逐步讲解如何通过 CSS 属性 offset-path 和 offset-distance 实现路径跟随动画,并利用 Motion 库增强动画控制和交互性。文章涵盖了多元素动画、悬停和滚动速度控制、Z 轴顺序管理、CSS 属性映射以及响应式设计等高级技术,旨在帮助开发者构建复杂而流畅的网页动画效果。


author Daniel Petho
#优质博文 #前端 #webgl #gsap #动画 #three #shader #demo #course
科幻风格的 3D 音频可视化器,这个真的很酷!
Coding a 3D Audio Visualizer with Three.js, GSAP & Web Audio API

AI 摘要:本文详细介绍了如何使用 Three.js、GSAP 和 Web Audio API 构建一个科幻风格的 3D 音频可视化器,灵感来源于 Webflow & GSAP 社区挑战赛。作者通过创建一个响应音乐的“异常探测器”界面,将声音与视觉效果实时结合,打造了一个充满未来感的沉浸式体验。文章从 Three.js 场景搭建、音频分析、自定义着色器,到 GSAP 动画和交互设计,逐步讲解了实现过程,展示了创意编码如何将技术与艺术融合。

1. 项目背景与灵感
• 源于 Webflow & GSAP 社区挑战赛(主题为“Draggable & Inertia”),作者决定创建一个音乐响应的 3D 可视化器。
• 设计灵感是一个在黑暗虚空中发光的橙白渐变球体,通过 Midjourney 生成视觉原型,并结合 Photoshop 调整作为视觉基础。
• 目标是打造一个科幻“异常探测器”界面,通过音乐驱动视觉效果,融合声音与画面。

2. Three.js 场景搭建
• 使用 Three.js 创建 3D 场景,包括场景、透视相机和渲染器,设置相机位置以获得最佳视角。
• 添加 OrbitControls 实现点击拖拽旋转视角,并设置阻尼效果以提升流畅性。
• 核心对象“异常球体”由两部分组成:外部线框球体(基于 IcosahedronGeometry,使用自定义 ShaderMaterial 实现发光线框效果,随音乐变形)和内部发光球体(基于 SphereGeometry,半透明发光效果形成光晕)。
• 增加背景粒子效果和网格覆盖,结合 Midjourney 生成的背景图像,营造全息显示的科幻氛围。

3. Web Audio API 音频分析
• 使用 Web Audio API 分析音频,支持用户上传音频文件或选择预设曲目。
• 通过 AudioContext 和 AnalyserNode 实时获取音频频率数据(fftSize=2048,平滑常数为 0.8),计算音频强度(audioLevel)用于驱动视觉变化。
• 动画循环中持续更新频率数据,提取平均音量和峰值频率,显示在 UI 上作为“异常指标”。
• 将音频强度值传入着色器和动画,同步音效与视觉效果(如球体亮度、变形程度随音乐强度变化)。

4. 音频响应着色器开发
• 使用 Three.js 的 ShaderMaterial 编写自定义 GLSL 着色器,控制球体的动态外观。
• 顶点着色器:通过 Simplex 噪声函数实现顶点变形,随时间和音频强度变化,音乐强烈时球体更尖锐、混乱。
• 片段着色器:应用 Fresnel 效果增强边缘发光,随音频强度脉动,同时加入微弱的独立呼吸动画(sin 函数)。
• 内部发光球体使用 BackSide 渲染和加色混合,营造柔和光晕效果,增强能量场视觉感。

5. GSAP 动画与交互设计
• 使用 GSAP 实现流畅动画,如音频播放时的相机缩放(靠近球体)和暂停时的恢复,增强戏剧效果。
• 借助 GSAP 的 Draggable 和 InertiaPlugin 插件,制作可拖动的 UI 面板,支持动量效果,用户可“抛掷”面板,增加交互趣味性。
• 实验性地实现 3D 球体拖拽,通过自定义逻辑和惯性衰减模拟物理效果,用户可旋转和抛掷球体。
• GSAP 时间线用于编排多个动画序列(如文本淡出),确保交互和过渡自然流畅。

6. UI 设计与氛围营造
• 设计灵感来源于科幻控制面板,UI 使用简约风格(半透明深色面板、浅色文字),包括控制球体旋转速度、分辨率、变形程度和音频灵敏度的滑块。
• 增加音频频谱分析面板(基于 canvas 绘制频率条形图)和终端日志窗口,模拟高科技系统运行状态。
• 通过 CSS 实现屏幕网格覆盖,添加漂浮粒子效果,结合自制背景音乐,强化沉浸式科幻体验。

7. 总结与成果
• 最终作品是一个互动艺术品,用户加载音乐后,系统“启动”并同步音频与视觉,球体随音乐脉动变形,用户可通过控件调整效果或拖动面板/球体互动。
• 项目展示了 Three.js(渲染与着色器)、Web Audio API(音频分析)和 GSAP(交互动画)如何结合,创造多感官体验,体现了创意编码的潜力。


author Filip Zrnzevic
#前端 #codepen #demo #动画 #svg #gsap
Colourful GSAP animated SVG radio buttons
Josh Dillon continues an electrifying exploration of glitch animation in UI with this set of radio buttons. Make sure to visit Josh's collections for more.


via Codepen Spark#452
#优质博文 #动画 #前端 #css
Partial Keyframes • Josh W. Comeau

AI 摘要:本文由 Josh W. Comeau 撰写,详细介绍了 CSS 关键帧动画中“部分关键帧(Partial Keyframes)”的技巧及其强大应用。通过省略关键帧的起点(from)或终点(to),动画可以动态继承元素的当前样式值,从而实现更灵活和可组合的动画效果。文章还探讨了如何将多个关键帧动画叠加以创造复杂效果,以及使用 CSS 变量在关键帧中实现动态值设置,进一步提升动画的灵活性。作者还分享了一个额外的技巧和即将推出的动画课程信息,适合对 CSS 动画感兴趣的前端开发者深入学习。


author Josh W. Comeau Partial Keyframes • Josh W. Comeau
#优质博文 #前端 #动画 #css #svg
SVG Displacement Filtering 实现 Liquid Metal,性能很寄的……不希望以后到处都是这个效果(唉那有点恐怖了) 感觉展示性的网站用用还行。
A Deep Dive Into The Wonderful World Of SVG Displacement Filtering

Codepen

Mike Bespalov (@bbssppllvv):
It’s 3AM and I just recreated @Apple Liquid Metal right in the browser. No JavaScript. No WebGL. Just raw HTML + CSS.

Let me know if you want the code

https://fixupx.com/bbssppllvv/status/1932325303273271727
#优质博文 #前端 #css #WebGL #three #GLSL #demo #动画
coooool~
How to Create Interactive, Droplet-like Metaballs with Three.js and GLSL

AI 摘要: 本文详细介绍了如何使用 Three.js 和 GLSL 创建具有互动性的液滴状 metaball 效果。通过片段着色器和光线步进技术,实现了多个球体无缝融合并响应鼠标移动的动态效果。教程从基础设置开始,逐步深入到光线步进、表面法线计算、平滑融合、噪声纹理添加以及鼠标互动的实现,适合对 WebGL 和着色器编程感兴趣的开发者学习和实践。

概览:介绍了演示的整体结构和构建步骤,包括全屏平面的设置、光线步进渲染球体、从球体到 metaball 的平滑过渡、添加噪声以获得液滴外观,以及通过鼠标移动模拟拉伸效果。

1. 全屏平面设置:创建覆盖整个视口的全屏平面,通过 Three.js 设置几何体和材质,并传递画布大小的 uniform 变量到着色器。
2. 光线步进渲染球体:在片段着色器中使用光线步进技术渲染球体,详细解释了光线步进的步骤、SDF(有符号距离函数)的概念,以及如何通过代码实现两个重叠球体的渲染。
3. 从球体到 Metaball:通过 smoothMin 函数平滑融合多个球体的距离值,避免硬边缘,创造出有机融合的 metaball 效果,并通过参数控制融合平滑度。
4. 添加噪声以获得液滴外观:利用 3D 值噪声技术对表面进行扰动,结合反射向量和时间变量生成液滴纹理,并通过后处理增强玻璃般的半透明效果。
5. 通过鼠标移动模拟拉伸液滴:通过记录鼠标轨迹并沿轨迹放置多个球体,实现液滴的拉伸和弹性运动效果,增强互动性。


author Yuki Kojima
#demo #codepen #webgl #动画
着色器时钟 \ WebGL 片段着色器
pjkarlik 分享了一个能根据一天中的时间改变颜色的奇妙 WebGL 时钟。“我脑子里一直在想这个,想做一个时钟着色器。数学运算有点乱,而且为了让表盘正常工作,在时间上还需要一些技巧性的逻辑"。


via CopenSpark#451
#css #codepen #demo #动画
纯 CSS 滚动控制的滑动过渡
https://codepen.io/thebabydino/pen/azObZOe

Ana Tudor 🐯🖤🌻 (@anatudor):Made a little thing on
@CodePen: pure #CSS scroll controlled swipe transition https://codepen.io/thebabydino/pen/azObZOe

Note how the swipe is always clockwise, regardless of scroll direction and how the text fades in after the swipe.

Inspiration https://x.com/avanderpotte/status/1923382432784412771 (via @codrops)


Source
Media is too big
VIEW IN TELEGRAM
 
 
Back to Top