Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите сделать умную прокрутку (https://javascript.ru/forum/dom-window/43802-pomogite-sdelat-umnuyu-prokrutku.html)

sss2019 21.12.2013 12:54

Помогите сделать умную прокрутку
 
Здравствуйте. У меня на сайте есть боковая панель, которая прокручивается вместе со всем сайтом.

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

То есть например высота экрана 600 пикселей. А Высота панели 700 пикселей, так вот в этом случае при прокрутке вниз она должна подняться вверх только на 100 пикселей и замереть, независимо от того что основной контент прокручивается далее.

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

Структура такая
<body>
<div id="sidebar></div>
<div id="content></div>
</body>

monolithed 21.12.2013 14:04

oveflow: auto;

+ возможно Media Queries пригодится.

sss2019 21.12.2013 17:59

Нет не подходит. Бар должен прокруичиваться вместе с контентом, но когда прокрутиться до конца, то замирает, независимо от того что контент крутится дальше

sss2019 21.12.2013 18:45

Вот вроде наше что то подобное http://sticky01.blogspot.ru/2013/09/4.html
Только там правый блок останавливается перед нижним, а мне нужно чтобы останавливался когда достигнет своего конца при прокрутке.

Попробую разобраться

titan1993 22.12.2013 13:36

Если я правильно понял, то боковой панельке можно поставить position:fixed, тогда она не будет прокручиваться вообще, а как вариант можно сделать так:

var scroll=document.documentElement.scrollTop;
if(scroll>254){ //это условие заставляет двигаться элемент
$('#bannerc').css({
'top': function(){return scroll-254}
});
}else{ // сбрасывает стили от первого и второго условия
$('#bannerc').css({'top':'', 'bottom':''})
}
if(scroll>$(window).height()){ //необходимое тебе условие, только придется поправить scroll на то выражение, кот. тебе нужно
var y = $('#footer').height()+$('#copyright-content').height();
$('#bannerc').css({
'top':'',
'bottom': -$('#bannerc').height()//лучше всего задать у панели bottom
})
}
p.s. JS - очень мутная фигня, почитай про jQuery, он намного удачней


Часовой пояс GMT +3, время: 22:13.