• 请不要在回答技术问题时复制粘贴 AI 生成的内容
magiclx
V2EX  ›  程序员

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

  •  
  •   magiclx · Jun 4, 2024 · 2654 views
    This topic created in 885 days ago, the information mentioned may be changed or developed.

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

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

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

    11 replies  •  2024-06-08 23:41:57 +08:00
    bgm004
    bgm004
    Jun 4, 2024
    1
    是 View Transitions API ,不是 css transform ;
    https://developer.mozilla.org/zh-CN/docs/Web/API/View_Transitions_API
    magiclx
    magiclx
    OP
    Jun 4, 2024
    2
    @Track13 见笑了,谢谢提示。在不支持的浏览器上,手写 JavaScript 可以实现吗?
    paopjian
    paopjian
    Jun 4, 2024
    3
    @magiclx 纯手撸这种动态过渡动画相当于是手写两个 key 帧加过渡? 感觉有点类似于 ppt 了, 点击后让选择的链接文本上浮, 其他元素直接闪现? 代价就是得拦截前进后退操作,还得记录上一步元素的位置
    bgm004
    bgm004
    Jun 4, 2024
    4
    @magiclx 类似的叫 flip 。
    codehz
    codehz
    Jun 4, 2024
    5
    手动 js 实现有好多比较麻烦的地方,react 的话更为麻烦,因为 react 不能在组件被卸载之后执行代码,然后这种过渡效果很显然依赖这个行为,因此就需要很多 hacky 的方法来实现,可以看 framer-motion 的 AnimatePresence 组件(至今还是一堆 bug )
    brezeslow
    brezeslow
    Jun 4, 2024
    6
    astro 官网文档说明了一些特性
    视图过渡动画
    https://docs.astro.build/zh-cn/guides/view-transitions/
    zzlove
    zzlove
    Jun 5, 2024
    7
    看看是这种效果吗?页面是用 Next.js 写的
    https://blog.evolify.cn/
    magiclx
    magiclx
    OP
    Jun 6, 2024
    8
    @brezeslow 谢谢提示,avatar 挺炸的
    magiclx
    magiclx
    OP
    Jun 6, 2024
    9
    @zzlove 是的,对比楼上的实现,Astro 实现起来挺容易的。
    zzlove
    zzlove
    Jun 6, 2024
    10
    @magiclx nextjs 中也不难,理论上重写 一下 Link 组件,把跳转逻辑包在 document.startViewTransition 方法中,然后前后两个页面中需要过渡的元素,给同一个 view-transition-name 就可以了
    magiclx
    magiclx
    OP
    Jun 8, 2024
    11
    @zzlove 看到你的 blog 的实现了,这个效果确实让 Web 体验更流畅,但不看源码会感觉其中是挺复杂的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4060 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    ♥ Do have faith in what you're doing.