Часто при заказе верстки заказчик желает чтобы системные элементы, например полосы прокрутки (scrollbar) выглядели в одном стиле в разных браузерах. Кастомизация системных элементов неблагодарное занятие, но если нужно то нужно.
Данную проблему решить с помощью чистого css невозможно.
Решение на чистом JavaScript зачастую довольно громоздки, в плане количества строк кода.
Рассмотрим решение базирующееся на популярном фреймворке — jQuery/
Что и как?
Нам потребуется несколько файлов
Для работы плагина необходимы следующие файлы:
плагин the mouse wheel (реализация полной поддержки всех событий мыши)
плагин the jQEm (реализация динамического изменения размера скролла при изменении количества контента пользователем)
плагин jScrollPane (нужный нам плагин реализующий скролл у любого блока со стилем overflow:auto)
jScrollPane.css — стили
Все файлы можно загрузить вот здесь.
Подключается все это простым добавлением в head вашей страницы следующих ссылок:
<script type=»text/javascript» src=»jquery.js»></script>
<script type=»text/javascript» src=»jquery.mousewheel.min.js»></script>
<script type=»text/javascript» src=»jquery.em.js»></script>
<script type=»text/javascript» src=»jScrollPane.js»></script>
<link rel=»stylesheet» type=»text/css» media=»all» href=»jScrollPane.css» />
Активируется скроллбар для заданного элемента кодом :
$(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’)
Каким образом имитировать скроллбар операционной системы?
Нужно немного изменить css, например под MAC OS
.osX .jScrollPaneTrack {
background: url(osx_track.gif) repeat-y;
}
.osX .jScrollPaneDrag {
background: url(osx_drag_middle.gif) repeat-y;
}
.osX .jScrollPaneDragTop {
background: url(osx_drag_top.gif) no-repeat;
height: 6px;
}
.osX .jScrollPaneDragBottom {
background: url(osx_drag_bottom.gif) no-repeat;
height: 7px;
}
.osX a.jScrollArrowUp {
height: 24px;
background: url(osx_arrow_up.png) no-repeat 0 -30px;
}
.osX a.jScrollArrowUp:hover {
background-position: 0 0;
}
.osX a.jScrollArrowDown {
height: 24px;
background: url(osx_arrow_down.png) no-repeat 0 -30px;
}
.osX a.jScrollArrowDown:hover {
background-position: 0 0;
}
.left .jScrollPaneTrack {
left: 0;
right: auto;
}
.left a.jScrollArrowUp {
left: 0;
right: auto;
}
.left a.jScrollArrowDown {
left: 0;
right: auto;
}
/* IE SPECIFIC HACKED STYLES */
* html .osX .jScrollPaneDragBottom {
bottom: -1px;
}
/* /IE SPECIFIC HACKED STYLES */
В архиве все перечисленные изображения в стилях присутствуют
Тэги: browser scrollbar, interfase, JavaScript, jQuery

огромное спасибо, но почему не сделать бы страницу с примерами? скачивать скрипты, разбираться в них и потом выяснять что это не то что искал очень утомительно
http://www.kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html
вот эти самые примеры
А подскажите примеры плагинов ГОРИЗОНТАЛЬНЫХ скроллбаров на JQuery?
по поводу примеров сейчас вряд ли что смогу подсказать, горизонтальный скроллбар точно не скажу использовал или нет, не помню
в любом поисковике набери
jquery horizontal scrollbar
$(function()
{
$(‘.scroll-pane’).jScrollPane();
});
Куда это вставлять?
на страницу где необходимо применить эффект
$(document).ready(function(){
$(function() { $(‘.scroll-pane’).jScrollPane(); });
});
.scroll-pane — обьект у которого атрибут class =»scroll-pane»
Спасибо. Ещё вопрос, в FirefoxЕ и в explorer работает, а вот в Хроме, Опере и Сафари не хочет. Появляется скролл но без элемента который нужно цеплять (простите за без грамотность, не знаю как он называется) Что делать?
разобрался
Неплохо разжевано. Еще б описали про апдейт элемента со скроллом (к примеру если контент, а именно его высота, увеличивается динамически). на странице автора конечно это всё есть (апиметод reinitialise() кажется.. смотреть надо, не помню..), так что это я так, к слову
.