BS3 carousel + animate.min.css在Firefox中无法正常运行

时间:2014-11-27 15:35:24

标签: html css twitter-bootstrap animate.css

我在Ubuntu 14.04中使用firefox 33.0。我有一个带bootstrap 3轮播的网站(localhost)。我已经将“动画脉冲”(animate.min.css)类应用于“class = item”div中的“img”和我的旋转木马标题中的“animated fadeinleft”。

<div class="item">
   <img src="images/2.jpg" class="img-responsive animated pulse">
       <div class="container">
           <div class="carousel-caption">
               <h1 class="animated fadeinleft">Another example headline.</h1>
               <p class="animated fadeinright">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
         </div>
      </div>
</div>

共有3张幻灯片。对于每张幻灯片的第一次出现,图像和轮播标题带有效果(animate.min.css)。但在那之后,幻灯片来来往往没有任何影响。这只发生在firefox中。在Chrome 38.0.2125.104中,它按预期工作。有人请建议一种解决问题的方法。

1 个答案:

答案 0 :(得分:2)

如果您查看其site上的示例,则应用类,如果您想再次触发,则需要再次删除和添加类。这就是通过再次删除和添加类来重新启动或再次触发CSS3动画的方法。您可以阅读有关此here的更多信息。在您的情况下,类不会被删除并再次添加。

对于Bootstrap,您可以使用slide.bs.carousel再次添加类。我已经为各个动画的元素添加了数据属性[data-animation]。

<div class="active item">
    <img src="http://lorempixel.com/1024/750" alt="Slide1" class="img-responsive animated pulse" data-animation="pulse" />
    <div class="container">
       <div class="carousel-caption">
           <h1 class="animated fadeInLeft" data-animation="fadeInLeft">Another example headline.</h1>

           <p class="animated fadeInRight" data-animation="fadeInRight">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
       </div>
     </div>
</div>

JS代码

function animateElement(obj, anim_) {
    obj.addClass(anim_ + ' animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
        $(this).removeClass();
    });
}

$('#myCarousel').on('slide.bs.carousel', function (e) {

    var current = $('.item').eq(parseInt($(e.relatedTarget).index()));
    $('[data-animation]').removeClass();
    $('[data-animation]', current).each(function () {
        var $this = $(this);
        var anim_ = $this.data('animation');
        animateElement($this, anim_);
    });
});

Fiddle Demo