javascript - 延迟后,如何让div在滚动到后消失?

标签 javascript jquery html css

编辑:刚刚意识到我不需要等待滚动延迟。我可以在加载时使node2中的ul每五秒连续切换一次(淡入/淡出)。这简化了我认为的问题。

抱歉,我无法表述这个问题。

相关代码如下:

<div style="height: 600px" id="node1">


</div>

<div style="height: 600px" id="node2">

    <ul>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
    </ul>

    <ul>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
        <li>Lorem ipsum dolor sit amet, consectetur adipiscing elite.</li>
    </ul>


</div>

基本上一旦滚动到node2,我想显示第一个ul并隐藏第二个ul。延迟大约 5 秒后,我想让第一个 ul 淡出,第二个 ul 淡入。然后重复该过程。

我真的不知道如何将 ul 需要滚动到的事实和滚动到后的延迟结合起来,所以我没有任何尝试解决方案的代码。

最佳答案

您有两个单独的要求:

  • 检测用户是否滚动过某个元素。如果你不想重新发明轮子,你可以使用像Waypoints这样的插件,它已经做到了这一点。

    var firstTime = true; // we'll make sure the animation starts only once
    
    $('#node2').waypoint({
      // When #node2 arrives at 75% of the screen
      offset: '75%',
      handler: function(direction) {
        // If it's the first time and we're scrolling down
        if(firstTime && direction == 'down') { 
          firstTime = false;
          // Apply fading effect
          $('ul', this.element).fadingEffect();
        }
      }
    });
    
  • 元素淡入淡出。由于您在问题的标签中提到了 jQuery,我们将使用它并创建一个函数来依次显示您的 ul 元素。

    $.fn.fadingEffect = function() {
      var elements = $(this),
          total    = elements.length,
          index    = 0;
    
      elements.hide();
    
      (function next() {
        elements.eq(index)
                .fadeIn(500)
                .delay(5000)
                .fadeOut(200, function() {
                    index++;
                    if (index >= total) { index = 0; }
                    next();
                });
      })();
    };
    

Demo

为此,请确保在页面中的脚本之前包含 jQuery 和 Waypoints:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>

关于javascript - 延迟后,如何让div在滚动到后消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45764949/

相关文章:

javascript - React 中 TypeScript 中事件的类型

javascript - 使用 JavaScript 初始化 BootStrap Typeahead 时出现问题

javascript - 连接 html 元素后,结果变量返回 0

javascript - 使用 JQuery 的 .each 和 .on 将事件处理程序绑定(bind)到元素

php - 将 cookie 与 CURL 结合使用

php - ckeditor 与 jquery 更改事件

javascript - 编辑时验证表中的单元格

html - 为什么 Chrome 会覆盖高度和溢出 CSS

javascript - three.js 的新手,如何在 three.js 中为这个球制作动画

javascript - 如果它在滚动时改变高度,我该如何修复原始标题下的 div?