Сайдбар, прилипающий к низу страницы при прокрутке, глюк при обновлении :(

toxic steel
На сайте с 28.12.2007
Offline
175
579

Коллеги, есть вот такой кусок кода



$(document).ready(function(){

var HeaderHeight = 283;
var FooterHeight = 400;
var SidebarHeigt = Math.round($('aside').innerHeight());
var ContentHeight = Math.round($('.main').height());

var Offset = ContentHeight - SidebarHeigt; // Выравниваем высоту сайдбара по нижней границе контента

var ScrollInteger = Math.ceil(SidebarHeigt - $(window).height() + HeaderHeight); // Планка замирания снизу

var MinusOffset = '-' + String (Math.abs(ScrollInteger - $(window).scrollTop()) - HeaderHeight) + 'px'; // Рассчитываем смещение сайдбара, равна (Высота Сайдбара - ПозицияСкролла)

var ViewFooter = Math.ceil($('#body').height() - $(window).height() - FooterHeight);

if (($('aside').height() < $('.main').height()) && ((SidebarHeigt+HeaderHeight) > $(window).height())) {

$(window).on ('scroll load', function() {
if ($(window).scrollTop() < ScrollInteger) {$('aside').css({'position':'relative', 'top':'auto', 'bottom':'auto'});}
else if ($(window).scrollTop() >= ScrollInteger && $(window).scrollTop() < ViewFooter) {$('aside').css({'position': 'fixed', 'top': MinusOffset});}
else if ($(window).scrollTop() > ViewFooter) {$('aside').css({'position': 'relative', 'top' : Offset});}
});
$('aside').css({'width':SideBarWidth});
}

});


Всё неплохо работает, при загрузке страницы, но, если обновить страницу, когда она немного прокручена (scrollTop > 0), то после перезагрузки сайдбар начинает колбасить во все стороны :(

Очевидно, что как-то подругому обсчитываются координаты скроллтопа, но я ещё не настоящий сварщик и вообще это моя первая поделка на джиквери, нужна помощь, буду крайне признателен! :o

Есть отличные, недорогие рекламные места на агрофоруме (http://farmerforum.ru/viewtopic.php?t=1725)! Клуб истинных ценителей денег (http://coinshunter.ru/).
C
На сайте с 26.12.2005
Offline
146
#1

если вы его просто фиксируете, может сразу задать определенную позицию через css и всё? нет смысла что-то высчитывать при неизменном поведении

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

Лучший хостинг, которым пользовался за последние 15 лет! (https://beget.com/p107248)
toxic steel
На сайте с 28.12.2007
Offline
175
#2

Заголовок темы: "Сайдбар, прилипающий к низу страницы при прокрутке".

Сайдбар прокручивается вместе с контентной областью. Если сайдбар короче контента, он останавливается на своей нижней границе, дальше скроллится только контент. Как только на экране появляется футер, сайдбар отлипает.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий