我有两列的简单引导行:
<div class="row">
<div class="col-xs-7">
<p>All the way with you</p>
</div>
<div class="col-xs-5" id="stay">
<p>So happy to go</p>
</div>
</div>
<div id="stop">
<p>DON'T GO HERE.</p>
</div>
由于使用了此脚本,所以ID为#stay的列将一直沿第一列开始:
$(document).ready(function() {
(function($) {
var element = $('#stay'),
originalY = element.offset().top;
// Space between element and top of screen (when scrolling)
var topMargin = 10;
// Should probably be set in CSS; but here just for emphasis
element.css('position', 'relative');
$(window).on('scroll', function(event) {
var scrollTop = $(window).scrollTop();
element.stop(false, false).animate({
top: scrollTop < originalY
? 0
: scrollTop - originalY + topMargin
}, 300);
});
})(jQuery);
});
这是一个示例:https://jsfiddle.net/16vqvqev/7/。我想完成以下操作,以使其停止进入ID为#stop的div。
我怎么能用这个js呢?
我试着用词缀引导程序来做,但是也没有走太远……在那种情况下会怎么样?
编辑:我的网站实际上在带有粘性列的行之前有一些内容,因此代码实际上是这样的:https://jsfiddle.net/16vqvqev/11/
最佳答案
现在,通过稍微调整if语句解决了您的问题,而不是检查窗口的高度,而是让它检查了屏幕移动到的最终位置,并根据它固定在#stop或滚动条的顶部和以前一样
https://jsfiddle.net/dmitri_aleksejev/16vqvqev/8/
top: scrollTop
- originalY
+ topMargin
+ element.height()
+ parseInt(element.css("padding-bottom"))
> end
? element.css("top", end - $(element).height() - 60)
: scrollTop - originalY + topMargin
代替:
top: scrollTop < originalY
? 0
: scrollTop - originalY + topMargin