Не нашел подобную статью на хабре, а тут как раз пришлось столкнуться с данной проблемкой.
Рассмотрим два решения этой проблемы, на разных фреймворках — jQuery (jScrollPane) и MooTools (MooTools ScrollContro).
Итак, фреймворки.
MooTools ScrollContro
Плагин позволяет заменить скроллбар в любом контейнере, в котором он используется (количество контейнеров не ограничено).
Доступные функции:
Кроме этого:
плюсы:
Применять его очень просто. Достаточно лишь поместить контент в контейнер с идентификатором #contentcontainer:
При этом его оформление может быть разным, но в CSS описании обязательно должен присутствовать атрибут overflow:auto или overflow:scroll. Например:
Включить работу самого плагина нужно с помощью простой функции:
При использовании нескольких контейнеров, им нужно присваивать разные идентификаторы. Можно самим определять названия для элементов управления и для контейнера со скроллом, если необходимо, чтобы второй контейнер отличался от первого:
где:
Для использования понадобится библиотека Mootools 1.11 и сам плагин, который можно скачать на eSteak.net. Плагин создан A+media.
jScrollPane
jScrollPane — jQuery плагин, который позволяет заменить дефолтный скроллбар браузера в любом блоке со стилем overflow:auto.
Изменять внешний вид прокрутки можно с помощью CSS.
jScrollPane кроссбраузерное решение на jQuery. Если браузер пользователя не поддерживает jQuery или JavaScript, то он увидит дефолтный системный скролл. Для точной копии ��сех событий мыши нужно подключить дополнительно mouse wheel plugin.
Использование
Подключить следующие файлики.
Все файлы можно загрузить со страницы jScrollPane.
Можно использовать любой селектор, по отношению к элементу, к которому нужно применить действие плагина. Например, с приведенным ниже кодом, плагин работает, когда документ содержит хотя бы один элемент с классом scroll-pane:
Дополнительные параметры:
Рассмотрим два решения этой проблемы, на разных фреймворках — jQuery (jScrollPane) и MooTools (MooTools ScrollContro).
Итак, фреймворки.
MooTools ScrollContro
Плагин позволяет заменить скроллбар в любом контейнере, в котором он используется (количество контейнеров не ограничено).
Доступные функции:
- Перетаскивание бегунка вверх-вниз
- Управление стрелками вверх-вниз
- Использование колесика мыши
Кроме этого:
- Размер бара изменяется в зависимости от содержания блока
- Колесико мыши используется, только если курсор находится над содержанием
- Если содержание меньше, чем заданное пространство, то контроллеры скроллбара не будут выводиться
плюсы:
- Если JavaScript отключен выводится стандартный скроллбар
- Вид скролла полностью настраивается с помощью CSS
- Неограниченное число скроллбаров
- Работает в IE, FF, Opera, Safari, Chrome
Применять его очень просто. Достаточно лишь поместить контент в контейнер с идентификатором #contentcontainer:
Text content
При этом его оформление может быть разным, но в CSS описании обязательно должен присутствовать атрибут overflow:auto или overflow:scroll. Например:
#contentcontainer {
height: 300px;
width: 435px;
padding-top: 0;
padding-right: 10px;
overflow: scroll;
overflow-x: hidden;
margin-top: 20px;
font-size: 1.1em;
}Включить работу самого плагина нужно с помощью простой функции:
window.addEvent('domready', function() {
new ScrollControl($('contentcontainer'), {'createControls': true});
});При использовании нескольких контейнеров, им нужно присваивать разные идентификаторы. Можно самим определять названия для элементов управления и для контейнера со скроллом, если необходимо, чтобы второй контейнер отличался от первого:
new ScrollControl($('contentcontainer1'), {'htmlElementPrefix': 'control2_'}, $('scrolltrack1'), $('scrollknob1'), $('scrollUpBtn1'), $('scrollDownBtn1'));где:
- htmlElementPrefix — префикс контейнера-маски
- scrolltrack1 — альтернативный класс для контейнера по которому движется бегунок
- scrollknob1 — альтернативный класс бегунка
- scrollUpBtn1 и scrollDownBtn1 — кнопки вниз и вверх на скролле
Для использования понадобится библиотека Mootools 1.11 и сам плагин, который можно скачать на eSteak.net. Плагин создан A+media.
jScrollPane
jScrollPane — jQuery плагин, который позволяет заменить дефолтный скроллбар браузера в любом блоке со стилем overflow:auto.
Изменять внешний вид прокрутки можно с помощью CSS.
jScrollPane кроссбраузерное решение на jQuery. Если браузер пользователя не поддерживает jQuery или JavaScript, то он увидит дефолтный системный скролл. Для точной копии ��сех событий мыши нужно подключить дополнительно mouse wheel plugin.
Использование
Подключить следующие файлики.
- jquery-1.2.6.min.js (Библтотека jQuery)
- jquery.mousewheel.min.js (the mouse wheel плагин (если нужна полная поддержка всех событий мыши))
- jquery.em.js (the jQEm плагин для автоматического изменения размера скролла, в соответствии с количеством контента)
- jScrollPane.js (сам jScrollPane плагин)
- jScrollPane.css (стили собственно)
Все файлы можно загрузить со страницы jScrollPane.
Можно использовать любой селектор, по отношению к элементу, к которому нужно применить действие плагина. Например, с приведенным ниже кодом, плагин работает, когда документ содержит хотя бы один элемент с классом scroll-pane:
$(function()
{
$('.scroll-pane').jScrollPane();
});Дополнительные параметры:
- scrollbarWidth [int] — ширина скроллбара в пикселях (по умолчанию 10)
- scrollbarMargin [int] — отступ слева от скроллбара в пикселях (по умолчанию 5)
- wheelSpeed [int] — управление скоростью перемещения контента при скролле в пикселях (по умолчанию 18)
- showArrows [boolean] — управляет выводом стрелочек вверх-вниз (по умолчанию задано 'false')
- arrowSize [int] — высота стрелок если showArrows=true (подсчитывается из CSS если не задана)
- animateTo [boolean] — определяет автопрокрутку к определенному флагу scrollTo and scrollBy (по умолчанию 'false')
- dragMinHeight [int] — минимальная высота при которой появляется скролл (по умолчанию 0)
- dragMaxHeight [int] — максимальная высота при которой появляется скролл (по умолчанию 99999!)
- animateInterval [int] — Интервал в миллисекундах для обновления и анимации области скролла (по умолчанию 100)
- animateStep [int] — Определяет расстояние при достижении которого начинается анимация (по умолчанию 3)
- maintainPosition [boolean] — Позволяет зафиксировать позицию контента при его изменении (по умолчанию 'true')
- scrollbarOnLeft [boolean] — Определяет положение скроллбара слева от контента (также можно определить с помощью CSS)
- reinitialiseOnImageLoad [boolean] — Определяет должен ли скрипт реинициализировать себя при добавлении в контент изображения (по умолчанию 'false')
