呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
#优质博文 #前端 #CSS #JavaScript #视图转换
探讨在视图过渡 (View Transitions) 过程中如何保持视频和音频的播放状态,并区分了同页面与跨页面两种场景下的实现差异。
Astro 的持久化过渡效果很好用的。
View Transitions & Playing Video
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
author Chris Coyier
探讨在视图过渡 (View Transitions) 过程中如何保持视频和音频的播放状态,并区分了同页面与跨页面两种场景下的实现差异。
Astro 的持久化过渡效果很好用的。
View Transitions & Playing Video
AI 摘要:本文主要研究了在 Web 视图过渡 (View Transitions) 期间保持视频/音频播放的技术细节。作者指出,单页面视图过渡 (Same-Page View Transitions) 能够原生支持 (Just Works™) 状态保持,类似于 .moveBefore() 的效果;而多页面视图过渡 (Multi-Page View Transitions) 由于页面卸载则无法直接维持状态。不过,通过利用 pageswap 和 pagereveal 事件配合 sessionStorage 存储视频进度,可以“伪造”出一种近乎无缝的过渡体验。文章还提到了 Astro 框架在此方面的实现以及未来浏览器原生支持跨页面状态保存的可能性。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 同页面视图过渡 (Same-Page View Transitions)
• 在单页面环境下,使用 document.startViewTransition 操作 DOM 时,浏览器会自动保留 <video>、<audio> 甚至 <iframe> 的播放状态。
• 这种机制与新兴的 moveBefore() 方法类似,能够确保视频在元素变换位置或样式时持续播放而不中断。
2. 多页面视图过渡 (Multi-Page View Transitions) 的挑战
• 在传统的多页面架构 (MPA) 中,当页面卸载并加载新页面时,所有状态都会丢失,即便新旧页面包含相同的视频元素也无法自动衔接。
• 讨论了 Astro 等框架的实现原理,它们通常通过将页面导航转化为类似单页面应用 (SPA) 的体验来避开这一限制。
• 引用了 Chrome 团队关于跨页面状态保存的讨论,指出这不仅是视图过渡的需求,更是更通用的页面导航状态持久化方案。
3. 手动实现跨页面的“状态伪造”方案
• 使用 CSS 的 @view-transition { navigation: auto; } 启用多页面过渡。
• 为新旧页面的视频元素指定相同的 view-transition-name。
• 利用 JavaScript 监听 pageswap (页面离开前) 和 pagereveal (新页面显示时) 事件,通过 sessionStorage 存取视频的当前播放时间 (currentTime)。
• 虽然在切换瞬间会有轻微的音频/视频停顿 (Blip),但视觉和逻辑上能达到较好的衔接效果。
4. 扩展应用与工具
• 该技术同样适用于 YouTube 等第三方 <iframe> 嵌入视频,只需结合相应的 Iframe 播放器 API (Iframe Player API) 提取和还原数据。
• 推荐参考 Chrome 官方演示和作者提供的 CodePen 示例进行深度学习。
author Chris Coyier
#优质博文 #CSS #JavaScript #前端 #视图转换 #course
Different Page Transitions For Different Circumstances
以下是方便搜索索引的大纲(AI 生成),请读原文
author Chris Coyier
Different Page Transitions For Different Circumstances
AI 摘要:文章探讨了如何利用 Web API 中的 View Transitions (视图过渡)API 为多页应用程序(MPA)创建差异化的页面切换动画。作者通过 JavaScript 事件监听 pageswap 和 pagereveal,结合 e.viewTransition.types.add() 方法,实现根据特定 URL 条件设置自定义视图过渡类型。接着,文章演示了如何在 CSS 中使用 :active-view-transition-type() 伪类,针对不同的视图过渡类型应用不同的动画效果,从而覆盖默认过渡动画。最后,作者分享了一些关于这种 JS 与 CSS 协同控制的见解,并提及了相关学习资源和浏览器兼容性信息。
以下是方便搜索索引的大纲(AI 生成),请读原文
1. View Transitions API 基础
• DOM 事件监听: 介绍 pageswap 和 pagereveal 这两个事件,它们在页面卸载和加载时触发,并提供 e.viewTransition 对象用于自定义视图过渡。
• 条件设置过渡类型: 讲解如何通过 JavaScript 在 pagereveal 事件中,根据 document.location.pathname 等条件,使用 e.viewTransition.types.add() 方法为当前页面设置一个自定义的视图过渡类型。
2. 默认页面过渡动画配置
• CSS 定义默认动画: 演示如何使用 ::view-transition-old(main) 和 ::view-transition-new(main) 伪元素,结合 @keyframes 定义网站的默认页面切换动画效果,如滑动出入。
• 元素命名: 强调需要为要过渡的元素(如 <main> 内容区)设置 view-transition-name 属性,以便在 CSS 中精准控制。
3. 定制特定页面的过渡动画
• CSS 覆盖默认动画: 展示如何利用 :active-view-transition-type() CSS 伪类,根据在 JavaScript 中设置的自定义视图过渡类型,为特定页面定义一套专属的动画,从而覆盖默认的动画效果。
• 动画优先级: 解释自定义类型动画如何通过更高的 CSS 特异性(specificity)来覆盖默认动画。
4. 学习资源与浏览器支持
• 参考资料: 推荐 Bramus 的《Cross-document view transitions for multi-page applications》作为进一步学习的优秀资源。
• CSS 类型声明: 提及 view-transition-types CSS 属性,但作者对其具体用途表示疑问,推测可能用于限制允许的过渡类型。
• 浏览器兼容性: 指出 JavaScript ViewTransitionTypeSet 和 CSS :active-view-transition-type() 在 Chrome 和 Safari 中得到支持,Firefox 则需开启 flag(标志)。
author Chris Coyier
#折腾 #demo #动画 #视图转换
试了试手搓这个知名昼夜模式切换动画,感觉怪带劲的~~
inspired by https://codepen.io/aaroniker/pen/raaMMGx
虽然还有点问题w不过这个效果我喜欢,应该会留着
view transition 真好啊!
试了试手搓这个知名昼夜模式切换动画,感觉怪带劲的~~
inspired by https://codepen.io/aaroniker/pen/raaMMGx
虽然还有点问题w不过这个效果我喜欢,应该会留着
view transition 真好啊!
#优质博文 #前端 #css #动画 #视图转换
View Transitions Applied: Smoothly animating a border-radius with a View Transition
via Bramus
View Transitions Applied: Smoothly animating a border-radius with a View Transition
AI 摘要:本文介绍了如何利用复制动画到 ::view-transition-group,实现元素边框圆角、背景和边框的平滑过渡。
文章聚焦于 View Transitions 中元素状态转换时遇到的边框圆角(border-radius)动画问题。作者通过具体的 Demo 展示了当同一元素转换时,由于使用快照的特性,会导致圆角动画无法自然过渡,而是简单地淡出替换。为了解决这一问题,作者提出了将动画效果复制到 ::view-transition-group 内的方法,通过自定义关键帧(keyframes),实现圆角、背景以及边框等 CSS 属性的平滑过渡。文章还介绍了如何应对背景颜色变化和边框宽度变化的场景,解释了设置 overflow、box-sizing 以及隐藏部分快照的必要性,从而使动画效果达到最佳。最后,作者总结了如何通过分别捕获背景和前景,进而在 View Transition 中获得更理想的动画效果,并呼吁读者在社交媒体上分享此技术。
via Bramus
#优质博文 #前端
View Transitions Applied: Dealing with the Snapshot Containing Block
https://www.bram.us/2025/03/04/view-transitions-snapshot-containing-block/
#视图转换 #css #性能优化 #移动端适配
View Transitions Applied: Dealing with the Snapshot Containing Block
https://www.bram.us/2025/03/04/view-transitions-snapshot-containing-block/
AI 摘要:探讨视图转换伪元素坐标空间差异导致的布局跳跃问题及解决方法。
本文深入分析了在视图转换(View Transitions)中使用::view-transition-group(*)伪元素时,因坐标系差异(视口 vs 快照包含块)导致的布局跳跃问题。作者通过代码示例说明如何通过getBoundingClientRect获取元素的旧/新位置,并利用这些坐标优化动画关键帧。然而,在移动端场景中,由于视口(Layout Viewport)与快照包含块(Snapshot Containing Block)的坐标系原点不同(如地址栏影响),直接使用视口坐标会导致动画跳跃。文章提出需通过坐标系转换方法解决这一问题,并附移动端示例验证解决方案的有效性。
#视图转换 #css #性能优化 #移动端适配