В общем я не стал извращаться и собрал все на codepen: http://codepen.io/anon/pen/aDijc/ Как юзать: var options = { classPrefix: 'rScrollbar', // префикс для CSS trackV: { // опции для вертикального скролла container: null, // контейнер для скролла scrollDelta: 20, // на сколько будем скролить за одно нажатие на стрелку scrollInterval: 100, // интервал в миллисекундах если зажать стрелку track: { // опции для скроллбара html: '', // дополнительный html (если нужен), будет вставлен внутрь контейнера mouseOver: function() {}, // коллбеки mouseOut: function() {}, mouseDown: function() {}, mouseUp: function() {}, mouseClick: function() {} }, butUp: { // опции для кнопки html: '', // дополнительный html (если нужен), будет вставлен в контейнер кнопки mouseOver: function() {}, mouseOut: function() {}, mouseDown: function() {}, mouseUp: function() {}, mouseClick: function() {} }, butDown: { html: '', mouseOver: function() {}, mouseOut: function() {}, mouseDown: function() {}, mouseUp: function() {}, mouseClick: function() {} }, bar: { // опции ползунка size: { // размер ползунка min: 10, max: 'auto' }, html: '', // дополнительный html (если нужен) mouseOver: function() {}, mouseOut: function() {}, mouseDown: function() {}, mouseUp: function() {}, mouseClick: function() {}, beforeDrag: function() {}, afterDrag: function() {} }},trackH: { // все тоже самое для горизонтального контейнераcontainer: null,scrollDelta: 20,scrollInterval: 100,track: {html: '',mouseOver: function() {},mouseOut: function() {},mouseDown: function() {},mouseUp: function() {},mouseClick: function() {}},butUp: {html: '',mouseOver: function() {},mouseOut: function() {},mouseDown: function() {},mouseUp: function() {},mouseClick: function() {}},butDown: {html: '',mouseOver: function() {},mouseOut: function() {},mouseDown: function() {},mouseUp: function() {},mouseClick: function() {}},bar: {size: { min: 10, max: 'auto'},html: '',mouseOver: function() {},mouseOut: function() {},mouseDown: function() {},mouseUp: function() {},mouseClick: function() {},beforeDrag: function() {},afterDrag: function() {}}},afterInit: function() {}};$('.element').rScrollbar(options); Серьёзно плагин не тестировал, но нацеливался на работу везде, начиная с ИЕ7. На мобилах работать не будет (не поддерживаются touch-события), да и вообще на мобилы не прицеливался. Если будут вопросы постараюсь помочь. Суть моего плагина в том, что скроллбар можно поместить в отдельный контейнер (что я и продемонстрировал по ссылке - скроллбар снизу под основным контентом). Если надо классический скроллбар (как у всех), то надо просто оставить options.container = null (собственно так по умолчанию).