Cross-browser Custom Scrollbar In JavaScript - jScrollPane
File Size: | 195 KB |
---|---|
Views Total: | 4248 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

jScrollPane is a jQuery plugin to create cross-browser, fully configurable, highly customizable scrollbars on any container elements.
Supports any scrollable containers such as DIVs, iframes, and even the whole body.
Created for non-WebKit browsers that don't support custom browser scrollbars using pseudo elements.
More features:
- Supports both horizontal and vertical scrollbars.
- Supports mouse wheel event. Requires mousewheel plugin.
- Auto scrolls the content when hovering over scroll arrows.
- Auto maintains the position whenever it is reinitialised.
- Fully responsive. Auto reinit on window resize.
- Auto scrolls the content to the correct place on page load. Smooth scroll is supported as well.
Table Of Contents:
How to use it:
1. Include jQuery library and the jScrollPane plugin's files on the page.
<link rel="stylesheet" href="/path/to/style/jquery.jscrollpane.css" /> <script src="/path/to/cdn/jquery.min.js"></script> <script src="/path/to/script/jquery.jscrollpane.js"></script>
2. Include the mousewheel plugin. OPTIONAL.
<script src="/path/to/cdn/mousewheel.min.js"></script>
3. Include the mwheelIntent.js plugin to detect the user intent. OPTIONAL.
<script src="/path/to/script/mwheelIntent.js"></script>
4. Create a scrollable container.
<div class="scroll-pane"> ... content here ... </div>
.scroll-pane { width: 300px; height: 200px; overflow: auto; }
5. Attach the jScrollPane plugin to the scrollable content and done.
var pane = $('.scroll-pane'); pane.jScrollPane( { // options here } );
6. All plugin options to customize the scrollbar.
// shows scroll arrows showArrows: false, // maintains the position whenever it is reinitialised maintainPosition: true, // scroll to the bottom even if new content is added to the pane stickToBottom: false, // scroll to the right even if new content is added to the pane stickToRight: false, // allows to scroll towards the point you click clickOnTrack: true, // auto re-init (e.g. new content is added to the pane) autoReinitialise: false, // time to wait before auto re-init autoReinitialiseDelay: 500, // the smallest height that the vertical drag can have verticalDragMinHeight: 0, // the max height that the vertical drag can have verticalDragMaxHeight: 99999, // the smallest width that the horizontal drag can have horizontalDragMinWidth: 0, // the max width that the horizontal drag can have horizontalDragMaxWidth: 99999, // content width contentWidth: undefined, // enables smooth scroll animateScroll: false, // duration of smooth scroll animateDuration: 300, // easing for smooth scroll animateEase: 'linear', // enables a link to scroll the pane to specific anchor hijackInternalLinks: false, // vertical/horizontal gutter verticalGutter: 4, horizontalGutter: 4, // mousewheel speed mouseWheelSpeed: 3, // the amount that the scrollpane scrolls each time on of the arrow buttons is pressed arrowButtonSpeed: 0, // the number of milliseconds between each repeated scroll event when the mouse is held down over one of the arrow keys arrowRepeatFreq: 50, // auto scrolls the content when hovering over the scroll arrows arrowScrollOnHover: false, // controls the amount that the scrollpane scrolls each trackClickRepeatFreq while the mouse button is held down over the track trackClickSpeed: 0, // the number of milliseconds between each repeated scroll event when the mouse is held down over the track trackClickRepeatFreq: 70, // split|before|after|os verticalArrowPositions: 'split', horizontalArrowPositions: 'split', // enables keyboard navigation enableKeyboardNavigation: true, keyboardSpeed: 0, // hides focus outline hideFocus: false, // Delay before starting repeating initialDelay: 300, // Default speed when others falsey speed: 30, // Percent of visible area scrolled when pageUp/Down or track area pressed scrollPagePercent: 0.8, // always shows vertical scrollbar alwaysShowVScroll: false, // always shows horizontal scrollbar alwaysShowHScroll: false, // auto re-init on content resize resizeSensor: false, // time to wait before re-init on resize resizeSensorDelay: 0,
6. API methods.
var api = pane.data('jsp'); // re-init the instance api.reinitialise(delay); // scrolls to a specific element api.scrollToElement(ele, stickToTop, animate); // scrolls to a specific point api.scrollTo(destX, destY, animate); api.scrollToX(destX, animate); api.scrollToY(destY, animate); api.scrollToPercentX(destPercentX, animate); api.scrollToPercentY(destPercentY, animate); // scrolls the pane by the specified amount of pixels api.scrollBy(deltaX, deltaY, animate); api.scrollByX(deltaX, animate); api.scrollByY(deltaY, animate); // Positions the horizontal drag at the specified x position api.positionDragX(x, animate); // Positions the vertical drag at the specified y position (and updates the viewport to reflect this) api.positionDragY(y, animate); // animates to a new position api.animate(ele, prop, value, stepCallback, completeCallback); // scrolls to the bottom api.scrollToBottom(animate); // hijacks the links on the page which link to content inside the scrollpane api.hijackInternalLinks(); // get data api.getContentPositionX(); api.getContentPositionY(); api.getContentWidth(); api.getContentHeight(); api.getIsScrollableH(); api.getPercentScrolledX(); api.getPercentScrolledY(); api.getIsScrollableV(); api.getContentPane(); // destroys the instance api.destroy();
This awesome jQuery plugin is developed by vitch. For more Advanced Usages, please check the demo page or visit the official website.