2017-04-20 19 views
2

我需要标题以与用户一起滚动,但只能在两点之间滚动。因此,从用户的起始位置滚动到某个位置(位于与我们联系的容器上方),然后与用户一起返回。如何使元素在两点之间滚动

这里是当前使用的代码,这允许标题滚动,直到需要的某个点但是当用户向上滚动时不滚动备份。

HTML:

<div id="header" class="row"> 
     <div class="col-sm-5"> 
      <h1 id="scrollwith">Our Services.</h1> 
     </div> 
     <div class="col-sm-6 col-sm-offset-1"> 
      <img src="images/backdroppattern.png" style="width: 100%; height: 3000px;"> 
     </div> 
    </div> 
</div> 

<div id="contact-container"> 

    <div class="row"> 
     <div class="col-sm-12"> 
      <a class="contact-link" href="#"><h2>Contact us &#10132;</h2></a> 
     </div> 
    </div> 

</div> 

JS:

$(document).ready(function(){ 

var windw = this; 

$.fn.followTo = function (pos) { 
    var $this = this, 
     $window = $(windw); 

    $window.scroll(function(e){ 
     if ($window.scrollTop() > pos) { 
      $this.css({ 
       position: 'absolute', 
       top: pos 
      }); 
     } else { 
      $this.css({ 
       position: 'fixed' 
      }); 
     } 
    }); 
}; 

$('#scrollwith').followTo(2700); 

}); 

回答

0

所有学分这个答案去从岗位here到@MicronXD。

jQuery.fn.extend({ 
 
    followTo: function(elem, marginTop) { 
 
    var $this = $(this); 
 
    var $initialOffset = $this.offset().top; 
 
    setPosition = function() { 
 
     if ($(window).scrollTop() > $initialOffset) { 
 
     if (elem.offset().top > ($(window).scrollTop() + $this.outerHeight() + marginTop)) { 
 
      $this.css({ 
 
      position: 'fixed', 
 
      top: marginTop 
 
      }); 
 
     } 
 
     if (elem.offset().top <= ($(window).scrollTop() + $this.outerHeight() + marginTop)) { 
 
      $this.css({ 
 
      position: 'absolute', 
 
      top: elem.offset().top - $this.outerHeight() 
 
      }); 
 
     } 
 
     } 
 
     if ($(window).scrollTop() <= $initialOffset) { 
 
     $this.css({ 
 
      position: 'relative', 
 
      top: 0 
 
     }); 
 
     } 
 
    } 
 
    $(window).resize(function() { 
 
     setPosition(); 
 
    }); 
 
    $(window).scroll(function() { 
 
     setPosition(); 
 
    }); 
 
    } 
 
}); 
 

 
$('#scrollwith').followTo($('#contact-container'), 0);
#contact-container { 
 
    background: red; 
 
    height: 900px; 
 
} 
 

 
#scrollwith { 
 
    background: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="header" class="row"> 
 
    <div class="col-sm-5"> 
 
    <h1 id="scrollwith">Our Services.</h1> 
 
    </div> 
 
    <div class="col-sm-6 col-sm-offset-1"> 
 
    <img src="images/backdroppattern.png" style="width: 100%; height: 3000px;"> 
 
    </div> 
 
</div> 
 

 

 
<div id="contact-container"> 
 

 
    <div class="row"> 
 
    <div class="col-sm-12"> 
 
     <a class="contact-link" href="#"> 
 
     <h2>Contact us &#10132;</h2> 
 
     </a> 
 
    </div> 
 
    </div> 
 

 
</div>

相关问题