Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2014, 16:15
Новичок на форуме
Отправить личное сообщение для ilyakor Посмотреть профиль Найти все сообщения от ilyakor
 
Регистрация: 10.06.2014
Сообщений: 4

Фиксирование блока при прокрутке страницы и его "остановка" по достижению "футера"
Товарищи, очень прошу разъяснить, как сделать подобную вещь. Нужно чтобы сайдбар (.sidebar) при скроле фиксировался, а по достижению футера, или более правильно, нижней границы блока (.help-blank), останавливался. Они выделены outline'ами. Страница и стили немного вырваны из контекста, прошу не кидаться камнями за минификацию css, нужные стили табулированы. Прикладываю архивчик. Спасибо!
Вложения:
Тип файла: zip help.loc.zip (232.8 Кб, 1 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2014, 16:24
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

вместо того, чтобы архив лепить, лучше на фиддле запилите, никому неохота расчехлять ваш зип.
Ответить с цитированием
  #3 (permalink)  
Старый 19.09.2014, 16:29
Новичок на форуме
Отправить личное сообщение для ilyakor Посмотреть профиль Найти все сообщения от ilyakor
 
Регистрация: 10.06.2014
Сообщений: 4

Запилил на jsfiddle - http://jsfiddle.net/c2yu2f3f/1/

Последний раз редактировалось ilyakor, 19.09.2014 в 16:40.
Ответить с цитированием
  #4 (permalink)  
Старый 19.09.2014, 16:52
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

//получаем положение и размеры сайдбара после загрузки страницы и положение футера
        var sTop = $('.sidebar').offset().top;
        var sLeft = $('.sidebar').offset().left;
        var sHeight = $('.sidebar').height();
        var fTop = $('#footer').offset().top;
        
        $(window).scroll(function () {
            //получаем текущие координаты
                    var top = $(document).scrollTop();
            //Если проспролили дальше, чем верхний край сайдбара был, когда страница открылась и нижний край сайдбара не упирается в футер, меняем позиционирование
                    if (top >= sTop && (top + sHeight) <= fTop) {
                        $('.sidebar').css({ 'position': 'fixed', 'top': '0px', 'left': sLeft + 'px' });
                    } else {
                        $('.sidebar').removeAttr('style');
                    }
});
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Сворачивание блока при клике в любом месте страницы onuvidelsolnce Элементы интерфейса 6 15.04.2013 13:35
Как при прокрутке страницы оставлять элемент на месте? FRIE jQuery 1 02.08.2012 20:54
установить переменную сессии через ajax при загрузке страницы optik77 AJAX и COMET 3 02.06.2011 17:36
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21