offset внутри scroll не хочет работать...
Привет всем. Задача с виду простая, перед тем как сделать думал что справлюсь минут за 5 максимум, но!!!!
Имеется сайт. Структура такая: 1) Шапка - ширина 100%, высота 90 px 2) Меню - ширина 100%, высота 40 px 3) Блок с категориями - ширина 100%, а вот высота или 0 или примерно 600px. Все дело в том, что есть кнопка "Свернуть/развернуть категории". 4) Основной контент. Ширина 100%. Внутри основная часть с margin-right 200px и абсолютно спозиционированный блок (с id "myBlock") у которого top:0, right=0. Задача - сделать чтобы при прокрутке myBlock прилипал к экрану как только коснется верхним краем верхней части экрана пользователя (я же говорил вначале задача простая :-)). Делаю так: (пример упростил максимально, на самом деле там стили более точно высчитываются): var top = $("#myBlock").offset().top; var showMyBlock = function(){ var myBlockScroll = top - $(document).scrollTop(); if(myBlockScroll < 0){ $("#myBlock").css("position","fixed"); }else{ $("#myBlock").css("position","absolute"); }; }; $(window).scroll(showMyBlock); В принципе, свиду все нормально. Но печалька, ведь есть блок с категориями, который пользователь может развернуть в любой момент, тогда это уже будет некрасиво, мой блок будет не пойми где. Засунул строчку var top = $("#myBlock").offset().top;внутрь функции, чтобы при скроле координата высчитывалась всегда, тогда после загрузки страницы и разворачивания блока категорий координата будет всегда верной.......НО! Вот то что в итоге: var showMyBlock = function(){ var top = $("#myBlock").offset().top; var myBlockScroll = top - $(document).scrollTop(); if(myBlockScroll < 0){ $("#myBlock").css("position","fixed"); }else{ $("#myBlock").css("position","absolute"); }; }; $(window).scroll(showMyBlock); Во всех браузерах блок при прокрутке скачет. Открыл Хром, Просмотр кода элемента на myBlock и замечаю при скроле: первый раз скролю, position: fixed, дальше прокручиваю колесико мыши - position снова absolute и так до самого низа страницы значение меняются постоянно. Уже голову сломал! Почему стили скачут если явно задано при myBlockScroll < 0 фиксированная позиция. Вытаскиваю строку var top = $("#myBlock").offset().top;за функцию скрола - все ОК, но бардак при раскрытии категорий. Сможет кто-нибудь что-нибудь посоветовать? Заранее благодарен. |
Всё, разобрался!
|
Часовой пояс GMT +3, время: 04:53. |