React 中怎么快速实现 /t/897332 这种过渡动画? - V2EX
edis0n0
V2EX    React

React 中怎么快速现 /t/897332 这种过渡动画?

  •  
  •   edis0n0 Dec 17, 2022 5503 views
    This topic created in 1256 days ago, the information mentioned may be changed or developed.
    前两天刷 V 站的时候看到的,传送门 /t/897332

    非互联网公司,技术栈都是 10 年前的,感觉这过渡动画不错想在个人产品里加个玩玩。
    26 replies    2022-12-18 22:51:07 +08:00
    luckyc
        1
    luckyc  
       Dec 17, 2022
    动画是 css 的, 和框架没多大关系.
    edis0n0
        2
    edis0n0  
    OP
       Dec 17, 2022
    @l4ever #1 主要想快速实现这种跨页标题直接放大的无缝过渡动画,应该需要 SPA 框架的路由协助
    edis0n0
        3
    edis0n0  
    OP
       Dec 17, 2022
    公司技术栈最新的产品用的是 asp net core 1.1 mvc + jquery ,react 和 ng 都是没事干学着玩的,如果理解的不对欢迎指出
    jazzg62
        4
    jazzg62  
       Dec 17, 2022
    看看 css 的 animation
    edis0n0
        5
    edis0n0  
    OP
       Dec 17, 2022
    @jazzg62 #4 他这个动画跨页面了,不需要路由框架协助吗
    okakuyang
        6
    okakuyang  
       Dec 17, 2022
    react-transition-group
    IvanLi127
        7
    IvanLi127  
       Dec 17, 2022 via Android
    @edis0n0 为啥一定要路由框架,如果就三五个页面,其实直接用元素的隐藏和显示就好了。。
    fwh
        8
    fwh  
       Dec 17, 2022   2
    jazzg62
        9
    jazzg62  
       Dec 17, 2022
    @edis0n0 需要啊,但是也需要先了解下 css 的 animation 哦
    icebay
        10
    icebay  
       Dec 17, 2022
    https://motion.ant.design/exhibition-cn/
    okakuyang
        11
    okakuyang  
       Dec 17, 2022
    @fwh framer 居然做这么好了!,去年看还是只有编辑器,现在居然连模版库之类的都全了!
    ragnaroks
        12
    ragnaroks  
       Dec 17, 2022   1
    这里只说思路,我没仔细看原文的实现。

    在页面(路由)的销毁过程过渡 width 、height 至 0 ,在页面(路由)的挂载过渡 width 、height 至目标值。页面的默认大小设置为 0 即可。原理并不复杂,麻烦的是如何配合组件的形态(按钮、卡片)和用途(输入文本、点击响应)实现配套的过渡动画。
    ragnaroks
        13
    ragnaroks  
       Dec 17, 2022   1
    我再补充一个,react 、vue 这类库中的“页面”其实并不是真正的某个 html 页面,而是一个 div 元素,因此完全可以利用基于样式表的动画。简单来说 /page/a 和 /page/b 就是 <div id="page-a"> 和 <div id="page-b">。
    56rhcrivs55TVKdX
        15
    56rhcrivs55TVKdX  
       Dec 17, 2022
    react-spring
    我的项目就用到了 不过只用了淡入淡出 可以参考一下
    https://github.com/mebtte/cicada
    edis0n0
        16
    edis0n0  
    OP
       Dec 17, 2022
    @rabbbit #14 看文档貌似要 Chrome 109+才能用,那意义不大,后台统计一堆用户尤其是国产浏览器那些版本号还在 chrome70~80 间
    yinchunde
        17
    yinchunde  
       Dec 17, 2022
    Flutter 非常好实现,Hero 动画,只要设为同一个 tag 的两个页面的元素,即可做到同样的效果。
    edis0n0
        18
    edis0n0  
    OP
       Dec 17, 2022
    @yinchunde #17 Flutter 太重了,开个页面先加载几 MB 的用户体验什么动画都救不回来
    edis0n0
        19
    edis0n0  
    OP
       Dec 17, 2022
    @edis0n0 先加载几 MB wasm 文件

    记得打了 wasm 的,输入法 bug 卡没了
    lyc575757
        20
    lyc575757  
       Dec 17, 2022 via Android
    vue 倒是有一个类似的库 专门做跨路由的动画 可以看看 readme 参考一下它是如何实现的

    https://github.com/antfu/vue-starport
    Feaures
        21
    Features  
       Dec 17, 2022
    可以想一想不用框架能不能实现
    再用框架降低实现的成本
    ccraohng
        22
    ccraohng  
       Dec 17, 2022
    framer motion
    react-flip-toolkit
    wellerman
        23
    wellerman  
       Dec 17, 2022
    先了解一下 css 动画
    supertan
        24
    supertan  
       Dec 18, 2022
    讨论啥呢,CSS transition 是实现不了还是咋滴
    RabbitDR
        25
    RabbitDR  
       Dec 18, 2022
    xiao252
        26
    xiao252  
       Dec 18, 2022
    Shared Element Transition
    About     Help     Advertise     Blog     API     FAQ     Solana     3260 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 79ms UTC 11:43 PVG 19:43 LAX 04:43 JFK 07:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86