【问题标题】:CSS3 TranslateX relative to current position like jQuery animateCSS3 TranslateX 相对于当前位置,如 jQuery animate
【发布时间】:2013-07-26 10:27:21
【问题描述】:

我正在创建某种幻灯片,其设置如下:

<div class="slideshow">
    <div class="slide">slide1</div>
    <div class="slide">slide2</div>
    <div class="slide">slide3</div>
</div>

为了完成这项工作,我使用 jQuery animate 函数将(绝对定位的)幻灯片向左或向右移动。这是通过使用相对 (-= , +=) 属性来完成的,如下所示:

$('.slide').animate({ left: '+=300' }, 500);

但这似乎在平板电脑或手机等设备上变得非常缓慢。因此,我想为此使用 CSS3 进行一些性能优化。但是......如何做到这一点?

我尝试了类似的方法:

$('.slide').css({
    'transition' : 'all 1.0s ease-in-out',
    'transform' : 'translateX(-'300px)'
});

但这只能工作一次(呃)。尽管如此,将 - 更改为 -= 也不起作用。所以实际的问题是。 jQuery 在 CSS3 中的相关功能如何做?

谢谢!

【问题讨论】:

    标签: jquery css jquery-animate translate-animation


    【解决方案1】:

    您可以使用.animate() 的step 属性

    步骤的快速使用示例:

    $(element).animate({opacity:1},{
       duration: 500,
       step:function(now, fn){
          fn.start = 0;
          fn.end = 300;
          $(element).css({'left':now});
       }
    });
    

    fn.start - 是起点,fn.end 是终点,例如你想增加 0 到 300px。

    关于此代码:transition:all 500ms ease-out 0s;,您可以将其留在 CSS 文件中。我希望我已经给出了一些想法。谢谢

    编辑:应用 translateX

     step:function(now, fn){
                fn.start = 0;
                fn.end = 300;
                $(element).css({
                     '-webkit-transform':'translateX('+now+'%)'
                    ,'-moz-transform':'translateX('+now+'%)'
                    ,'transform':'translateX('+now+'%)'
                });
              }
    

    【讨论】:

    • 感谢您的帮助,但我似乎不明白 translateX 的作用?
    • 我更新了我的答案,'now' 的值将取决于您分配给 fn.start 和 fn.end 的值。
    • 好的..到达那里。但现在似乎是等到最后一步,然后执行滑动动作。我将过渡添加到 css(在 .slide 元素上)并将步骤中定义的 css 更改为: '-webkit-transform': 'translateX(-' + now + 'px)' (这应该向左移动)。
    • 你能提供一个简单的js小提琴吗?谢谢编辑:还请确保transition的值:all 100ms ease-out 0s;大于延迟。
    • 这是一个小提琴:jsfiddle.net/7Gamt ...仅供参考,在我的情况下,幻灯片是“永无止境的”,所以当动画完成时,第一张幻灯片放在后面。当然,这是反向滑动时的另一种方式。
    猜你喜欢
    • 1970-01-01
    • 2017-01-30
    • 2013-11-27
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多