在某个div处停止滚动

时间:2017-04-16 15:08:13

标签: jquery html css

我正试图弄清楚如何在达到页面上的某个点后阻止div滚动,并且由于某种原因我无法让它工作。

这是当我一直滚动到页脚底部时显示的内容,但是我希望它在到达div部分结束后停止

整个部分的div是:

content

image

我的jQuery:

   jQuery(function($) {
        var $el = $('#scroll'),
        top = $el.offset().top;

    $(window).scroll(function() {
        var pos = $(window).scrollTop();

        if (pos > top && !$el.hasClass('fixed')) {
          $el.addClass('fixed');
        } else if (pos < top && $el.hasClass('fixed')) {
            $el.removeClass('fixed');
        }

    });

    });

我的CSS:

#scroll.fixed {
            position: fixed;
            top: 20%;
        }

        #scroll {
            position: absolute;
            top: 50px;
        }

我试过

stopPosition = $('.content').offset().top;

但没有运气。

1 个答案:

答案 0 :(得分:2)

在此示例中,当您到达 .wrap 内的div时,滚动将停止 你必须获得该div的位置,并在每次向下滚动该div时将窗口设置为该位置

&#13;
&#13;
$(document).ready(function() {

  $(window).scroll(function() {

    var stopScroll = $('.wrap > div:nth-child(2)').offset().top;
    if ($(window).scrollTop() > $('.wrap div:nth-child(2)').offset().top) {
      $(window).scrollTop(stopScroll); /*this will stop the scroll to not go further down*/
    }

  });
})
&#13;
body {
  font-family: 'Roboto', sans-serif;
  font-size: 30px;
  font-weight: 300;
  margin-top: 0;
}

header {
  width: 100%;
  height: 50px;
  line-height: 50px;
  position: fixed;
  font-size: 24px;
  font-weight: 700;
  color: #FFF;
  padding: 12px 0;
  margin: 0;
  background: #252525;
  transition: background 1s ease;
}

.wrap {
  padding-top: 74px;
  margin: 0;
}

.container {
  width: 960px;
  margin: 0 auto;
  overflow: hidden;
}

.block-1,
.block-2 {
  height: 500px;
  text-align: center;
}

p {
  margin-top: 185px;
}

.block-1 {
  background: #27AACC;
  color: #FFF;
}

.block-2 {
  background: #668E99;
  color: #FFF
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
  <div class="block-1">
    <div class="container">

    </div>
  </div>
  <div class="block-2">
    <div class="container">

    </div>
  </div>
  <div class="block-1">
    <div class="container">

    </div>
  </div>

</div>
&#13;
&#13;
&#13;