检测Bootstrap Modal&内部的滚动在滚动上为每个元素设置动画

时间:2016-11-04 06:22:26

标签: javascript jquery html css twitter-bootstrap

我试图编写一个代码,当打开引导模式时,会在滚动到每个元素时触发zoomIn动画。

jsFiddle Link - https://jsfiddle.net/nwxLq2zg/1/

以下是示例代码 -

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">

         <p>...</p>
         <p>...</p>
         <p>...</p>
         <p>...</p>
         ...   

      </div>
    </div>
  </div>
</div>

的jQuery

$('#myModal').on('show.bs.modal', function () {

    $(".modal-body").unbind("scroll");

    $(".modal-body").scroll(function(){

        var mScroll = $(this).scrollTop();

        $('.modal-body p').each(function(){

          var eTop = $(this).offset().top;
          console.log('Modal:'+mScroll+'| Element:'+eTop);

          if(eTop >  mScroll) {
            $(this).addClass('animated zoomIn');
          }

        });
    });
});

问题是无论滚动值如何都会向所有元素触发addClass。我怀疑这是因为我的代码无法识别个别&#34;&lt; p&gt;&#34;标签。如果有人能找到答案,那将非常有帮助。

可在此jsFiddle - https://jsfiddle.net/nwxLq2zg/1/

中找到实际代码

2 个答案:

答案 0 :(得分:0)

我尝试使用<= mScroll并添加-50 on top offset 检查这个小提琴。

https://jsfiddle.net/nwxLq2zg/5/

$('#myModal').on('show.bs.modal', function () {

    $(".modal-body").unbind("scroll");

    $(".modal-body").scroll(function(){
        var mScroll = $(this).scrollTop();

        $('.modal-body p').each(function(){
        var eTop = $(this).offset().top - 50;

          if(eTop <=  mScroll) {
            $(this).addClass('animated zoomIn');
          }

        });
    });
});

答案 1 :(得分:0)

您可以使用Wow.js,它有助于揭示滚动信息。所有你需要做的就是下载这个插件在你的页面中添加js文件并在页面加载时初始化哇。

在您的HTML中,您不需要在运行时添加课程。

享受:)