关于 Astro 的元素 css transform 的效果的疑问

173 天前
 magiclx

我了解一点 CSS 对前端理解很基础,最近看到 Astro 再看到它切换效果时,发现某些元素似乎能有移动的残影效果,在我理解上,这些都是浏览器支持的。而在 VUE 或 React 上较少看到。

举例来说,在 这个网站 上点击链接,实现了元素移动的切换效果。

这些不使用 Astro 或其它框架,如何简单的实现?

1046 次点击
所在节点    程序员
11 条回复
Track13
173 天前
是 View Transitions API ,不是 css transform ;
https://developer.mozilla.org/zh-CN/docs/Web/API/View_Transitions_API
magiclx
173 天前
@Track13 见笑了,谢谢提示。在不支持的浏览器上,手写 JavaScript 可以实现吗?
paopjian
173 天前
@magiclx 纯手撸这种动态过渡动画相当于是手写两个 key 帧加过渡? 感觉有点类似于 ppt 了, 点击后让选择的链接文本上浮, 其他元素直接闪现? 代价就是得拦截前进后退操作,还得记录上一步元素的位置
Track13
173 天前
@magiclx 类似的叫 flip 。
codehz
173 天前
手动 js 实现有好多比较麻烦的地方,react 的话更为麻烦,因为 react 不能在组件被卸载之后执行代码,然后这种过渡效果很显然依赖这个行为,因此就需要很多 hacky 的方法来实现,可以看 framer-motion 的 AnimatePresence 组件(至今还是一堆 bug )
brezeslow
173 天前
astro 官网文档说明了一些特性
视图过渡动画
https://docs.astro.build/zh-cn/guides/view-transitions/
zzlove
172 天前
看看是这种效果吗?页面是用 Next.js 写的
https://blog.evolify.cn/
magiclx
171 天前
@brezeslow 谢谢提示,avatar 挺炸的
magiclx
171 天前
@zzlove 是的,对比楼上的实现,Astro 实现起来挺容易的。
zzlove
171 天前
@magiclx nextjs 中也不难,理论上重写 一下 Link 组件,把跳转逻辑包在 document.startViewTransition 方法中,然后前后两个页面中需要过渡的元素,给同一个 view-transition-name 就可以了
magiclx
169 天前
@zzlove 看到你的 blog 的实现了,这个效果确实让 Web 体验更流畅,但不看源码会感觉其中是挺复杂的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1046753

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX