jQuery plugin Sticky
Перед вами элегантный и гибкий в настройках jQuery-плагин, который позволяет при прокрутке страницы вниз закреплять любые элементы, будь то меню или виджеты в сайдбаре. Такое закрепление позволяет привлечь дополнительное внимание аудитории к тем или иным блокам информации (формам подписки, виджетам социальных сетей, баннерам/тизерам, меню и т.п. элементам сайта), что улучшает поведенческие факторы сайта и/или повышает конверсию привлекаемой аудитории.

Плагин частично повторяет возможности аналогичных jquery-разработок, но имеет и свои отличительные особенности. В частности:
- плагин умеет «залиплять» блоки двумя различными визуальными способами («залипить после промотки всех блоков сайдбара за границу экрана» и «залипить непосредственно на границе залипания»);
- плагин умеет «залиплять» горизонтальное меню в шапке сайта, даже если оно изначально не было предназначено для этого;
- плагин умеет отключать свою работу на низких разрешениях экрана;
- плагин умеет красиво «залиплять» разбросанную по сайдбару группу виджетов (если виджетов несколько, то залипание всех виджетов кроме последнего осуществляется только на высоту залипающего виджета - после промотки страницы дальше, чем высота залипшего виджета, он «разлипает» и тем самым
передаёт эстафетную палочкудаёт возможность залипнуть следующему нужному виджету в сайдбаре); - плагин умеет использовать дополнительный css-стиль для состояния «залип»;
- плагин умеет выполнять callback-функции при смене состояния (залип/разлип).
Установка и настройка
Установка простая и стандартная для jquery-плагинов: подключаете последнюю версию jQuery и после него уже сам скрипт jquery.sticky.min.js. Вызов плагина - тоже простой:
<script type="text/javascript">
$(window).load(function(){
$('.sticky_widget').sticky();
});
</script>
При таком вызове Sticky плагин будет использовать для параметров значения по-умолчанию. Если вам нужно изменить дефолтные настройки, то ориентируйтесь на следующую таблицу параметров плагина (в таблице «пустые» значения по-умолчанию помечены прочерком «-»):
| Параметр | Описание | Значение «по-умолчанию» |
|---|---|---|
| topspacing | отступ (в пикселях) сверху при выводе «прилипшего виджета» | 20 |
| stopper | селектор блока, при достижении верхней границы которого виджет будет останавливаться и/или исчезать | .footer |
| marginbottom | отступ (в пикселях) от нижней границы страницы, дальше которого виджет не сможет «продвинуться» | 150 |
| styler | class, который будет приписываться блоку при залипании (название указывать без точки) | - |
| unlockwidth | заставляет «разблокировать» ширину прилипшего блока (т.е. не сохранять исходную ширину блока). Для активации укажите «true» или «1». Параметр в основном применяется при реализации залипания горизонтального меню в шапке сайта. | false |
| animduration | продолжительность анимации при способе залипания «afterall». Для отключения анимации укажите «0» | 500 |
| sticktype | способ («тип») залипания. Доступно три значения: afterall, alonemenu, directly. Вот описание типов:
| afterall |
| screenlimit | Опция, указывающая прекращать ли работу плагина на низких разрешениях экрана? К низким разрешениям относятся: ширина экрана меньше 1024 пикселей, высота экрана меньше 500 пикселей. Также работа останавливается на мобильных устройствах (имеющим в подписи браузера метки: android, webos, iphone, ipad, ipod или blackberry). | true |
| stick | callback-функция, которая вызывается в момент «залипания». Код должен быть указан в одну строку и оформлен в виде описания безымянной функции с одним передаваемым в неё параметром (в него передаётся информация и залипающем блоке), например, так:function (el) { alert("show!"); } | - |
| unstick | callback-функция, которая вызывается в момент окончания «залипания». Код оформляется аналогично функции stick | - |
Демонстрация работы
Посмотреть пример работы плагина можно здесь212. В нём реализована одновременная работа всех доступных способов залипания - для меню, для «после всех» и для «залипать сразу». Код вызова плагина для демонстрации такой:
$(window).load(function(){
// виджеты в левом сайдбаре
$('#sidebar-lt .sticky').sticky({
topspacing: 45,
stopper: '#footer',
marginbottom: 0,
sticktype: 'directly',
stick: function (el) { $(el).css('border', '5px solid #000'); },
unstick: function (el) { $(el).css('border', 'none'); }
});
// виджет в правом сайдбаре
$('#sidebar-rt .sticky').sticky({
topspacing: 45,
stopper: '#footer',
marginbottom: 0,
sticktype: 'afterall'
});
// картинка в тексте
$('#article .sticky').sticky({
topspacing: 45,
stopper: '#footer',
marginbottom: 0,
sticktype: 'directly'
});
// меню в шапке
$('#menu').sticky({
topspacing: 0,
stopper: '#footer',
marginbottom: 0,
styler: 'topMenuStyler',
animduration: 0,
sticktype: 'alonemenu'
});
});
Думаю, что на основе приведённого выше кода вы относительно просто сможете настроить использование плагина на своём сайте. Если вдруг не получится достичь желаемого эффекта «из коробки» - не отчаивайтесь! Возможно вам всего лишь требуется немного модернизировать используемые css-стили (в частности для опции styler) и/или активнее использовать возможности callback-функций (там доступны любые манипуляции с DOM, что позволит исправить любые мешающие работе огрехи html-верстки). Пробуйте, экспериментируйте и да прибудет с вами сила! ![]()
Скачать - free download
Краткая информация о текущей версии плагина:
Версия плагина: 0.7
Размер min-версии плагина: 2,55 Кб
ZIP архив: 3,98 Кб
Связи: стабильно работает с jQuery 1.9 и выше.
Условия использования: jQuery-плагин предоставляется AS IS («как есть») - без гарантий и техподдержки. При использовании и распространении плагина должна быть сохранена информация об авторе.
Скачать: jquery_sticky_0_7.zip311
Заключение
Изначально js-код плагина разрабатывался мной в качестве основы для одноимённого MaxSiteCMS-плагина, но т.к. js-часть вызвала живой интерес у вебмастеров, то я решил опубликовать её отдельно в виде самостоятельного jQuery-плагина. Надеюсь, что вам он тоже понравится и пригодится. Поделиться со мной своей радостью от использования ладной штуки на вашем сайте вы можете с помощью перевода на мой ЯД-кошелёк любой комфортной вам суммы через эту форму (можно переводить с банковской карты):




А можно этот виджет применить к шапке таблицы?
Дмитрий написал(-а):
Сам не делал такого, но думаю, что должно получится. Хотя, конечно, всё будет зависеть от условий...