我有一个挑战要解决。我正在制作一个自动调整大小和粘性(顶部和底部)的 div。您可以在此处查看示例http://www.sixplus1.com/inventmx/sixplus1_b.html
问题是当我将窗口滚动到底部(div 必须停止的位置)时,div 消失了,我认为这是由于边缘顶部问题,所以我需要解决它的想法。请查看示例并将窗口滚动到最后一行。任何帮助都将受到高度赞赏。
我需要尽快完成这项工作
希望你能帮助我和。这是代码..
注意:名为#content_derecha 的代码上的 div 具有粘性类
<script src="jquery-1.7.1.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
//I make the div with elastic properties
var bottomPosition = $(window).height();
$('#content_derecha').height(bottomPosition); //in this example #content_derecha is the div that has to be elastic and sticky
$(window).resize(function(){
var bottomPositionN = $(window).height();
$('#content_derecha').height(bottomPositionN); //the same div resizing its position when the window is resized
});
//Here starts the evaulation to make the div sticky
var footerFreno = $('.stop').offset().top; // returns the stop on top
var stickyTop = $('.sticky').offset().top; // returns the stop on bottom. I have another div on footer with the class .stop
if (!!$('.sticky').offset()) { //first the code verify if the sticky class exists
//here I have a function to verify if the scroll position is between the values I need
function verificaRango(x, n, m){
if (x >= n && x <= m)
{
return true; }else
{ return false;
}
}
$(window).scroll(function(){ // Here I capture in a variable the position of the scroll
//Here I calculate the bottom of the sticky and auto reize the div
var arribaValor = $('.sticky').offset().top
var altoValor = $('.sticky').height();
var posicionFreno = arribaValor + altoValor;
var windowTop = $(window).scrollTop(); // the position of the scrollbar
var posFreno = footerFreno-altoValor;
var semaforo = verificaRango(windowTop,stickyTop,posFreno); // I store in a variable named "semaforo" the result of the range verification to finally compare it in an if statement...
if (semaforo == true){ // I finally set the position fixed or static according the position nof the div...
$('.sticky').css({ position: 'fixed', top: 0 });
}
else {
$('.sticky').css('position','static');
}
});
}
});
</script>