手机端Javascript动画性能问题。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
mamimoluo

手机端Javascript动画性能问题。

  •  
  •   mamimoluo Dec 16, 2013 5494 views
    This topic created in 4523 days ago, the information mentioned may be changed or developed.
    要在手机端浏览器里实现一个47个带有数字小球随即跳动的动画,在电脑上很流畅,可是到了手机端(iPhone4),就非常卡。
    最开始尝试使用jQuery来实现,后来发现所有通过计时器动态改变CSS属性原理的库到了手机里都卡的一笔。
    后来采用CSS transition还是卡,
    最后采用Raphael库,采用SVG来动画,在没有text节点的时候很流畅,可是一旦加了text节点的时候,又卡的一笔。是不是浏览器在动画text的时候需要重新渲染font,因此很卡?

    大家帮忙看看,有没有好的解决方案,问题的根源在哪。

    jQuery + CSS3实现:http://demo.7leyuan.com/ticai/index.html
    Raphael的SVG实现:http://demo.7leyuan.com/ticai/svg.html
    12 replies    1970-01-01 08:00:00 +08:00
    switch
        1
    switch  
       Dec 16, 2013
    使用 CSS3 时开启“硬件加速”试试?(transition3d)
    P233
        2
    P233  
       Dec 16, 2013   1
    用 position 定位其实关闭了硬件加速,全部使用 transform:transition3D()
    P233
        3
    P233  
       Dec 16, 2013
    transform:translate3d()

    typo 错误,抱歉
    txlty
        4
    txlty  
       Dec 16, 2013
    PC端是流畅了,但你没注意到风扇越来越响么?

    no13bus
        5
    no13bus  
       Dec 16, 2013
    做彩票的
    C0VN
        6
    C0VN  
       Dec 16, 2013
    在电脑端也没觉得多流畅呀。小球速度太快了吧
    barretlee
        7
    barretlee  
       Dec 16, 2013   1
    注意算法的优化,通过 chrome 查看程序运行 profile ,将近十个函数的调用超过了 100ms,甚至还有300ms的, 超过100ms的函数都有待优化。

    减少计算和重绘,这么多元素不停的运动,页面开销肯定很大啊,每次浏览器渲染都要计算元素的位置。

    像这样的东西,用 canvas 作图,方便省事,无 DOM,效率高。
    Mutoo
        8
    Mutoo  
       Dec 16, 2013   1
    font 很要命的,能用图就用图,或者用 canvas image data。
    leohxj
        9
    leohxj  
       Dec 17, 2013
    说几点你试试:
    1. 把小球换成canvas
    2. 使用translate3d(),去移动位置,而不是top left.
    3. 可以尝试tweenlite(如果不在意文件大小)(http://www.greensock.com/gsap-js/)
    mamimoluo
        10
    mamimoluo  
    OP
       Dec 17, 2013
    @leohxj 之前使用过tweenlite,可能是适用方法不对,我用纯canvas试一试
    Tvguy
        11
    Tvguy  
       Dec 23, 2013 via iPad
    Basically mobile browser sucks in timer and on scroll events etc. try https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame
    miniwade514
        12
    miniwade514  
       Dec 23, 2013 via Android
    建议用canvas。dom操作很昂贵。
    About     Help     Advertise     Blog     API     FAQ     Solana     5597 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 74ms UTC 09:08 PVG 17:08 LAX 02:08 JFK 05:08
    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