javascript - 为其他幻灯片保留初始动画

标签 javascript jquery css animation

我有一个动画,其中显示了几张幻灯片及其各自的标题。我的问题是在其他幻灯片上生成相同的初始动画。第一次执行时,标题的动画从左侧出现,但在其他幻灯片中不起作用。我想要第一次运行时可以看到的标题动画,始终留在其他幻灯片上。我该怎么做?

我使用 wow.js 制作标题动画(从左开始动画),使用 slick.js 制作幻灯片。

这是我的元素:

https://jsfiddle.net/vvj2n4g7/

new WOW().init();  //http://mynameismatthieu.com/WOW/  
 
$(document).ready(function() {
  $('.sliderMain').slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: false,
    fade: true,

    autoplay: true,
    autoplaySpeed: 4000 //5000
  });
  $('.sliderSidebar').slick({
    slidesToShow: 5,
    slidesToScroll: 1,
    dots: false,
    centerMode: false,
    focusOnSelect: true,
    vertical: true,
    arrows: false
  });
  $('.sliderMain').on('afterChange', function(event, slick, currentSlide) {
    var vid = $(slick.$slides[currentSlide]).find('video');
    if (vid.length > 0) {
      $('.sliderMain').slick('slickPause');
      $(vid).get(0).play();
    }

  });

  var videos = document.getElementsByTagName('video');

  for (var i = 0; i < videos.length; i++) {
    videos[i].addEventListener('ended', myHandler, false);
  }

  function myHandler(e) {
    console.log('Video Complete')
    $('.sliderMain').slick('slickPlay');
  }

});

最佳答案

我通过添加“beforeChange”来解决您的问题,以便将显示设置为无,并将显示设置为阻止您的 afterChange 事件,您的代码应如下所示:

$('.sliderMain').on('afterChange', function(event, slick, currentSlide) {
    var vid = $(slick.$slides[currentSlide]).find('video');
    if (vid.length > 0) {
        $('.sliderMain').slick('slickPause');
        $(vid).get(0).play();
    }
    //After change set it to block
    $('.contenedor_nombre_proyecto').css("display", "block");
});

//Add this event handler
$('.sliderMain').on('beforeChange', function(event, slick, currentSlide) {
    //Defore change set it to none
    $('.contenedor_nombre_proyecto').css("display", "none");
});

完整的 JQuery 应如下所示:

new WOW().init();  //http://mynameismatthieu.com/WOW/  

$(document).ready(function() {
    $('.sliderMain').slick({
      slidesToShow: 1,
      slidesToScroll: 1,
      arrows: false,
      fade: true,

      autoplay: true,
      autoplaySpeed: 4000 //5000
    });

    $('.sliderSidebar').slick({
      slidesToShow: 5,
      slidesToScroll: 1,
      dots: false,
      centerMode: false,
      focusOnSelect: true,
      vertical: true,
      arrows: false
    });

    $('.sliderMain').on('afterChange', function(event, slick, currentSlide) {
        var vid = $(slick.$slides[currentSlide]).find('video');
        if (vid.length > 0) {
            $('.sliderMain').slick('slickPause');
            $(vid).get(0).play();
        }
        //After change set it to block
        $('.contenedor_nombre_proyecto').css("display", "block");
    });

    $('.sliderMain').on('beforeChange', function(event, slick, currentSlide) {
        //Defore change set it to none
        $('.contenedor_nombre_proyecto').css("display", "none");
    });

    var videos = document.getElementsByTagName('video');

    for (var i = 0; i < videos.length; i++) {
        videos[i].addEventListener('ended', myHandler, false);
    }

    function myHandler(e) {
        console.log('Video Complete')
        $('.sliderMain').slick('slickPlay');
    }
});

关于javascript - 为其他幻灯片保留初始动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41428779/

相关文章:

JavaScript 括号正则表达式

javascript - 如何将标题栏中的输入字段向右扩展

css - 如何通过 CSS 在父表中居中对齐 HTML 子表

html - 如何将不同的背景图像应用到 <html> 标签?

javascript - 当您放置刚才单击的 'a' 时如何保持(并显示)当前 'history.back()' 元素

jquery - 非语义网格和粘性导航

javascript - 包装 jQuery 函数

javascript - RefreshControll 数据重复每次都在 React native 中拉动以刷新 ScrollView

javascript - 异步系列 : memory leak of feature?

javascript - 如何使用 jQuery load() 函数从容器本身内部的 anchor 加载 html?