如何做出这种浮动效果? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
islujw
V2EX    Javascript

如何做出这种浮动效果?

  •  
  •   islujw 2018-05-11 22:18:26 +08:00 6408 次点击
    这是一个创建于 2740 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://www.apple.com/cn/icloud/

    这个页面的移动设备图形,像漂浮在空中一样。

    再比如:

    https://www.apple.com/cn/macbook/

    的开头和最后的 MacBook 图形。

    19 条回复    2018-05-15 19:03:25 +08:00
    lzvezr
        1
    lzvezr  
       2018-05-11 22:22:29 +08:00
    技术角度来说用了 translateY 变换
    美术角度来说用了阴影
    q9REUgpVVCU77pWj
        2
    q9REUgpVVCU77pWj  
       2018-05-11 22:56:18 +08:00
    macbook 那个,还特地用一个`hero_mask_large.svg`来优化,还是挺细致的。
    islujw
        3
    islujw  
    OP
       2018-05-12 00:36:57 +08:00
    @lzvezr @q9REUgpVVCU77pWj 谢谢,意思是,如何随着网页的滚动,变换这个值,并且有一定的延迟(以达到浮动的感知)?
    oswuhan
        4
    oswuhan  
       2018-05-12 01:15:41 +08:00
    用户滚动页面触发了预定义的 DOM 事件,事件的回调函数执行一系列修改 CSS 或 classname 的操作,相关的动画效果可以由 CSS3 实现也可以由 DOM API 实现
    oswuhan
        5
    oswuhan  
       2018-05-12 01:23:33 +08:00
    我猜你不是想问技术原理层面的东西,而是想问动画设计思路,比如动画延迟时间的把握,再比如元素偏移范围的设计原理,如果真是想问这个……我只能说,这就是一种随机的、感性的、经验性等多种因素影响下的设计,没有规律、原理可循,更没有万能的控件、框架、库一类的东西。
    islujw
        6
    islujw  
    OP
       2018-05-12 03:15:09 +08:00
    @oswuhan 是技术层面的。不是修改 CSS 达成的,这个属性的改变是直接在节点属性中变化的,所以应该是 JS 在控制。有无类似的 JS 方案?
    h1367500190
        7
    h1367500190  
       2018-05-12 04:31:08 +08:00
    可以请教该帖下的各位大神:
    t/454048
    Raincal
        8
    Raincal  
       2018-05-12 06:57:25 +08:00
    视差滚动效果 ant design 首页也用了 你可以去看下
    learnshare
        9
    learnshare  
       2018-05-12 08:06:30 +08:00
    window.addEventListener('scroll', (event) => { // 修改样式 });
    m31271n
        10
    m31271n  
       2018-05-12 10:39:32 +08:00
    像 @learnshare 说的,监听 scroll 事件,然后在回调中判断 BOX 是否进入了 Viewport 的可视范围,进入可视范围后,通过 CSS / JS 实现动画效果。

    + CSS 动画效果无非就是 transition blablabla。
    + JS 动画的话可以试试 anime.js 。
    rabbbit
        11
    rabbbit  
       2018-05-12 12:03:53 +08:00   3
    q9REUgpVVCU77pWj
        12
    q9REUgpVVCU77pWj  
       2018-05-12 13:42:22 +08:00
    哇~ @rabbbit 这个啥工具啊?还是把代码贴网页?
    kuleyu
        13
    kuleyu  
       2018-05-12 14:12:00 +08:00 via Android
    @rabbbit "web maker" + 1
    kuleyu
        14
    kuleyu  
       2018-05-12 14:21:22 +08:00 via Android
    @q9REUgpVVCU77pWj “ web maker ”一个 Chrome 扩展,不过现在也有单独的单页应用了 https://webmakerapp.com/app/ 很实用。
    agdhole
        15
    agdhole  
       2018-05-12 17:14:47 +08:00
    q9REUgpVVCU77pWj
        16
    q9REUgpVVCU77pWj  
       2018-05-12 18:00:26 +08:00
    @kuleyu 可以可以。试了下,好像我用 sublime text 分栏,再加一个自动刷新的 js,也能达到类似效果。
    islujw
        17
    islujw  
    OP
       2018-05-15 18:58:18 +08:00
    @Raincal 谢谢,但这不是视差滚动,而且有延迟效果。
    islujw
        18
    islujw  
    OP
       2018-05-15 19:00:35 +08:00
    @agdhole 谢谢,那个帖子就是我发的,问到延迟的时候,就再也没人能答上来了……所以又发了一次。
    islujw
        19
    islujw  
    OP
       2018-05-15 19:03:25 +08:00
    @rabbbit 谢谢,但这个方法没法达到目标哦。添加 class 都只是一次性的触发动画,但题目中说的,是直接和距离有关的,滚动的距离多少,直接决定了元素移动多少位置,并且不是立即移动,而是有延迟。所以,不可以使用改变 class 的方法。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3042 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 12:48 PVG 20:48 LAX 04:48 JFK 07:48
    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