Использование jQuery для прокрутки объекта в видимом окне - PullRequest
14 голосов
/ 11 марта 2011

Я был в процессе написания длинного описания того, что я хотел сделать, когда я понял, что боковая панель «Как спросить / отформатировать» на этой же самой странице «Задать вопрос» точно делает что я хочу.

По сути, он прокручивается вверх и вниз в унисон с остальной частью экрана, оставаясь выровненным по верху с основным разделом, если основной раздел не начинает прокручиваться вверху видимого окна. В этот момент окно боковой панели перестает прокручиваться и начинает действовать так, как будто оно расположено абсолютно, напротив верхней части видимого окна.

Я попытался покопаться в исходном коде и скриптах на этом экране «Спросить», но так много всего происходит, что это практически невозможно (по крайней мере, для меня). Я предполагаю, что jQuery на самом деле делает подобные вещи довольно простыми, но я новичок в этом, поэтому мне трудно разобраться в этом для себя. (И если это окажется распространенным вопросом, мои извинения - я искал около часа, но есть , поэтому много тесно сформулированных вопросов jQuery, которые я не смог выкопать ответ.)

Заранее спасибо за любую помощь.

Ответы [ 4 ]

30 голосов
/ 11 марта 2011

Это пример корзины покупок Apple на странице Applestore.

Логика:

  • проверить, где находится липкий элемент
  • проверить событие прокрутки, где верхнее окно
  • добавить или удалить CSSкласс для липкого элемента

JQuery:

$(document).ready(function() {  
 // check where the shoppingcart-div is  
 var offset = $('#shopping-cart').offset();  

 $(window).scroll(function () {  
   var scrollTop = $(window).scrollTop(); // check the visible top of the browser  

   if (offset.top<scrollTop) $('#shopping-cart').addClass('fixed');  
   else $('#shopping-cart').removeClass('fixed');  
  });  
});  

CSS:

.fixed {  
        position: fixed;   
        top: 20px;  
        margin-left: 720px;  
        background-color: #0f0 ! important; }

пример Ссылка

3 голосов
/ 11 марта 2011

Вот небольшой фрагмент, который я только что поднял, чтобы держать объект на экране во время прокрутки.

LIVE DEMO

http://jsfiddle.net/Jaybles/C5yWu/

HTML

<div id='object'>Top: 0px</div>

CSS

#object{height:200px; width:200px;background:#f00;position:absolute;top:0;left:0;}

JQuery

$(window).scroll(function(){
    var objectTop = $('#object').position().top;
    var objectHeight = $('#object').outerHeight();    
    var windowScrollTop = $(window).scrollTop();
    var windowHeight = $(window).height();

    if  (windowScrollTop  > objectTop)
        $('#object').css('top', windowScrollTop );
    else if ((windowScrollTop+windowHeight) < (objectTop + objectHeight))
        $('#object').css('top', (windowScrollTop+windowHeight) - objectHeight);        

    $('#object').html('Top: ' + $('#object').position().top + 'px');

});

ОБНОВЛЕННЫЙ ПРИМЕР (с таймером + анимация)

http://jsfiddle.net/Jaybles/C5yWu/2/

1 голос
/ 31 декабря 2012

, если вам нужно использовать его снизу, как это jQuery

$(document).scroll(function() {
    var objectTop = $('#shopping-cart').position().top;
    var objectHeight = $('#shopping-cart').outerHeight();  
    var windowScrollTop = $(window).scrollTop();
    var windowHeight = $(window).height();

   if((objectTop+objectHeight) <=  $('html').outerHeight())
       $('#'+cont).css('top', (windowScrollTop+windowHeight)- objectHeight);
   else
       $('#'+cont).css('top', $('html').outerHeight()- objectHeight);
});

Css

#shopping-cart{
    width: 100%;
    height: 50px;
    position: absolute;
    left: 0px;
    bottom: 0px;
}

, если вам нужнодержите его на вершине, так как этот jquery

$(document).scroll(function() {
    var objectHeight = $('#shopping-cart').outerHeight(); 
    var windowScrollTop = $(window).scrollTop();
    var windowHeight = $(window).height();

    $('#shopping-cart').css('top', windowScrollTop );

});

Css

#shopping-cart{
    width: 100%;
    height: 50px;
    position: absolute;
    left: 0px;
    top: 0px;
}

он будет творить чудеса и не забывайте держать свойстили с позициями, и одна вещь не работает с Internet Explorer 8.0.7

0 голосов
/ 12 февраля 2013

И если вам нужно только держать div в каком-то месте браузера, вам не нужен javascript, вы можете сделать это с помощью CSS.

#chatt-box {
    right: 5px;
    height: auto;
    width: 300px;
    position: fixed;
    bottom: 0px;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...