This website uses cookies to personalise ads and to analyse traffic ok
web design

jQuery custom content scroller

jQuery custom content scroller

Highly customizable custom scrollbar jQuery plugin. Features include vertical and/or horizontal scrollbar(s), adjustable scrolling momentum, mouse-wheel (via jQuery mousewheel plugin), keyboard and touch support, ready-to-use themes and customization via CSS, RTL direction support, option parameters for full control of scrollbar functionality, methods for triggering actions like scroll-to, update, destroy etc., user-defined callbacks and more.

Current version 3.1.5 (Changelog)
Upgrading from version 2

When upgrading from version 2.x to 3.x it’s important to use version 3 CSS and .png files. Version 3 is backwards compatible but it’s also a huge overhaul. One significant change is that you don’t need to call the update method manually (the script does it automatically). For more info see changelog.

Version 2 is still maintained and updated here.


How to use it

Get started by downloading the archive which contains the plugin files (and a large amount of HTML demos and examples). Extract and upload jquery.mCustomScrollbar.concat.min.js, jquery.mCustomScrollbar.css and mCSB_buttons.png to your web server (alternatively you can load plugin files from a CDN).

Instead of hosting the plugin files on your web server, you can load them directly from a CDN like jsdelivr, Github etc.

  • jsdelivr versioned/minified
    • //cdn.jsdelivr.net/jquery.mcustomscrollbar/3.0.6/jquery.mCustomScrollbar.concat.min.js
    • //cdn.jsdelivr.net/jquery.mcustomscrollbar/3.0.6/jquery.mCustomScrollbar.min.css
    • //cdn.jsdelivr.net/jquery.mcustomscrollbar/3.0.6/mCSB_buttons.png
  • Github latest/minified
    • //malihu.github.io/custom-scrollbar/jquery.mCustomScrollbar.concat.min.js
    • //malihu.github.io/custom-scrollbar/jquery.mCustomScrollbar.min.css
    • //malihu.github.io/custom-scrollbar/mCSB_buttons.png


HTML

Include jquery.mCustomScrollbar.css in the head tag your HTML document (more info)

jquery.mCustomScrollbar.css contains the styling of the custom scrollbar and themes. It should normally be included in the head tag of your html (typically before any script tags). If you wish to reduce http requests and/or have all your website stylesheet in a single file, you should move/copy scrollbars styling in your main CSS document.

mCSB_buttons.png contains all the button arrows (up, down, left and right) as image sprites for all scrollbar themes. The plugin archive contains the PSD source (source-files/mCSB_buttons.psd) so you can change them or add your own. This file should be in the same directory with plugin stylesheet.


<link rel="stylesheet" href="/path/to/jquery.mCustomScrollbar.css" />

Include jQuery library (if your project doesn’t use it already) and jquery.mCustomScrollbar.concat.min.js in the head tag or at the very bottom of your document, just before the closing body tag

Some frameworks and CMS include jQuery library in the head tag to make sure it’s loaded when other scripts request it. Usually, including .js files on the bottom of the HTML document (just before the closing body tag) is recommended for better performance. In any case, jQuery must be included first, before plugin scripts.


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="/path/to/jquery.mCustomScrollbar.concat.min.js"></script>

CSS

The element(s) you want to add scrollbar(s) should have the typical CSS properties of an overflowed block which are a height (or max-height) value, an overflow value of auto (or hidden) and content long enough to require scrolling. For horizontal scrollbar, the element should have a width (or max-width) value set.

If you prefer to set your element’s height/width via javascript, you can use the setHeight/setWidth option parameters.

Initialization

Initialize via javascript

After files inclusion, call mCustomScrollbar function on the element selector you want to add the scrollbar(s)

<script>
    (function($){
        $(window).on("load",function(){
            $(".content").mCustomScrollbar();
        });
    })(jQuery);
</script>

more info

The code is wrapped in (function($){ ... })(jQuery);. This ensures no conflict between jQuery and other libraries using $ shortcut (see Avoiding Conflicts with Other Libraries for more info). The plugin function is called in $(window).on("load") so it executes after all page elements (like images) are loaded.

You can change the function selector ".content" to any selector you want (an element id, class name, js variable etc.). For instance, if you want custom scrollbars to apply on the element with id content-1, you simply do:

$("#content-1").mCustomScrollbar();

You may also have multiple selectors by inserting comma separated values

$(".content,#content-1").mCustomScrollbar();

The above code adds custom scrollbars to a)every element with class name content and b)the element with id content-1.

Additionally, you may want to call mCustomScrollbar multiple times within a page in order to set different options (configuration and option parameters explained below) for each selector

<script>
  (function($){
    $(window).on("load",function(){
      $("#vertical-content").mCustomScrollbar({
        theme:"light-3",
        scrollButtons:{
          enable:true
        }
      });
      $("#horizontal-content").mCustomScrollbar({
        axis:"x",
        theme:"3d"
      });
    });
  })(jQuery);
</script>

Initialize via HTML

Add the class mCustomScrollbar to any element you want to add custom scrollbar(s) with default options. Optionally, set its axis via the HTML data attribute data-mcs-axis (e.g. "x" for horizontal and "y" for vertical) and its theme via data-mcs-theme. For example:

<div class="mCustomScrollbar" data-mcs-theme="dark">
  <!-- your content -->
</div>

Basic configuration & option parameters

axis

By default, the script applies a vertical scrollbar. To add a horizontal or 2-axis scrollbars, invoke mCustomScrollbar function with the axis option set to "x" or "yx" respectively

$(".content").mCustomScrollbar({
    axis:"x" // horizontal scrollbar
});
$(".content").mCustomScrollbar({
    axis:"yx" // vertical and horizontal scrollbar
});

theme

To quickly change the appearance of the scrollbar, set the theme option parameter to any of the ready-to-use themes available in jquery.mCustomScrollbar.css, for example:

$(".content").mCustomScrollbar({
    theme:"dark"
});

Configuration

You can configure your scrollbar(s) using the following option parameters on mCustomScrollbar function
Usage $(selector).mCustomScrollbar({ option: value });

setWidth: false
Set the width of your content (overwrites CSS width), value in pixels (integer) or percentage (string).
setHeight: false
Set the height of your content (overwrites CSS height), value in pixels (integer) or percentage (string).
setTop: 0
Set the initial css top property of content, accepts string values (css top position).
Example: setTop: "-100px".
setLeft: 0
Set the initial css left property of content, accepts string values (css left position).
Example: setLeft: "-100px".
axis: "string"
Define content’s scrolling axis (the type of scrollbars added to the element: vertical and/of horizontal).
Available values: "y", "x", "yx".

  • axis: "y" – vertical scrollbar (default)
  • axis: "x" – horizontal scrollbar
  • axis: "yx" – vertical and horizontal scrollbars
scrollbarPosition: "string"
Set the position of scrollbar in relation to content.
Available values: "inside", "outside".
Setting scrollbarPosition: "inside" (default) makes scrollbar appear inside the element. Setting scrollbarPosition: "outside" makes scrollbar appear outside the element. Note that setting the value to "outside" requires your element (or parent elements) to have CSS position: relative (otherwise the scrollbar will be positioned in relation to document’s root element).
scrollInertia: integer
Set the amount of scrolling momentum as animation duration in milliseconds.
Higher value equals greater scrolling momentum which translates to smoother/more progressive animation. Set to 0 to disable.
autoDraggerLength: boolean
Enable or disable auto-adjusting scrollbar dragger length in relation to scrolling amount (same bahavior with browser’s native scrollbar).
Set autoDraggerLength: false when you want your scrollbar to (always) have a fixed size.
autoHideScrollbar: boolean
Enable or disable auto-hiding the scrollbar when inactive.
Setting autoHideScrollbar: true will hide the scrollbar(s) when scrolling is idle and/or cursor is out of the scrolling area.
Please note that some special themes like “minimal” overwrite this option.
autoExpandScrollbar: boolean
Enable or disable auto-expanding the scrollbar when cursor is over or dragging the scrollbar.
alwaysShowScrollbar: integer
Always keep scrollbar(s) visible, even when there’s nothing to scroll.

  • alwaysShowScrollbar: 0 – disable (default)
  • alwaysShowScrollbar: 1 – keep dragger rail visible
  • alwaysShowScrollbar: 2 – keep all scrollbar components (dragger, rail, buttons etc.) visible
snapAmount: integer
Make scrolling snap to a multiple of a fixed number of pixels. Useful in cases like scrolling tabular data, image thumbnails or slides and you need to prevent scrolling from stopping half-way your elements. Note that your elements must be of equal width or height in order for this to work properly.
To set different values for vertical and horizontal scrolling, use an array: [y,x]
snapOffset: integer
Set an offset (in pixels) for the snapAmount option. Useful when for example you need to offset the snap amount of table rows by the table header.
mouseWheel:{ enable: boolean }
Enable or disable content scrolling via mouse-wheel.
mouseWheel:{ scrollAmount: integer }
Set the mouse-wheel scrolling amount (in pixels). The default value "auto" adjusts scrolling amount according to scrollable content length.
mouseWheel:{ axis: "string" }
Define the mouse-wheel scrolling axis when both vertical and horizontal scrollbars are present.
Set axis: "y" (default) for vertical or axis: "x" for horizontal scrolling.
mouseWheel:{ preventDefault: boolean }
Prevent the default behaviour which automatically scrolls the parent element when end or beginning of scrolling is reached (same bahavior with browser’s native scrollbar).
mouseWheel:{ deltaFactor: integer }
Set the number of pixels one wheel notch scrolls. The default value “auto” uses the OS/browser value.
mouseWheel:{ normalizeDelta: boolean }
Enable or disable mouse-wheel (delta) acceleration. Setting normalizeDelta: true translates mouse-wheel delta value to -1 or 1.
mouseWheel:{ invert: boolean }
Invert mouse-wheel scrolling direction. Set to true to scroll down or right when mouse-wheel is turned upwards.
mouseWheel:{ disableOver: [array] }
Set the tags that disable mouse-wheel when cursor is over them.
Default value:
["select","option","keygen","datalist","textarea"]
scrollButtons:{ enable: boolean }
Enable or disable scrollbar buttons.
scrollButtons:{ scrollAmount: integer }
Set the buttons scrolling amount (in pixels). The default value "auto" adjusts scrolling amount according to scrollable content length.
scrollButtons:{ scrollType: "string" }
Define the buttons scrolling type/behavior.

  • scrollType: "stepless" – continuously scroll content while pressing the button (default)
  • scrollType: "stepped" – each button click scrolls content by a certain amount (defined in scrollAmount option above)
scrollButtons:{ tabindex: integer }
Set a tabindex value for the buttons.
keyboard:{ enable: boolean }
Enable or disable content scrolling via the keyboard.
The plugin supports the directional arrows (top, left, right and down), page-up (PgUp), page-down (PgDn), Home and End keys.
keyboard:{ scrollAmount: integer }
Set the keyboard arrows scrolling amount (in pixels). The default value "auto" adjusts scrolling amount according to scrollable content length.
keyboard:{ scrollType: "string" }
Define the keyboard arrows scrolling type/behavior.

  • scrollType: "stepless" – continuously scroll content while pressing the arrow key (default)
  • scrollType: "stepped" – each key release scrolls content by a certain amount (defined in scrollAmount option above)
contentTouchScroll: integer
Enable or disable content touch-swipe scrolling for touch-enabled devices.
To completely disable, set contentTouchScroll: false.
Integer values define the axis-specific minimum amount required for scrolling momentum (default: 25).
documentTouchScroll: boolean
Enable or disable document touch-swipe scrolling for touch-enabled devices.
advanced:{ autoExpandHorizontalScroll: boolean }
Auto-expand content horizontally (for "x" or "yx" axis).
If set to true, content will expand horizontally to accommodate any floated/inline-block elements.
Setting its value to 2 (integer) forces the non scrollHeight/scrollWidth method. A value of 3 forces the scrollHeight/scrollWidth method.
advanced:{ autoScrollOnFocus: "string" }
Set the list of elements/selectors that will auto-scroll content to their position when focused.
For example, when pressing TAB key to focus input fields, if the field is out of the viewable area the content will scroll to its top/left position (same bahavior with browser’s native scrollbar).
To completely disable this functionality, set autoScrollOnFocus: false.
Default:
"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']"
advanced:{ updateOnContentResize: boolean }
Update scrollbar(s) automatically on content, element or viewport resize.
The value should be true (default) for fluid layouts/elements, adding/removing content dynamically, hiding/showing elements etc.
advanced:{ updateOnImageLoad: boolean }
Update scrollbar(s) automatically each time an image inside the element is fully loaded.
Default value is auto which triggers the function only on "x" and "yx" axis (if needed).
The value should be true when your content contains images and you need the function to trigger on any axis.
advanced:{ updateOnSelectorChange: "string" }
Update scrollbar(s) automatically when the amount and size of specific selectors changes.
Useful when you need to update the scrollbar(s) automatically, each time a type of element is added, removed or changes its size.
For example, setting updateOnSelectorChange: "ul li" will update scrollbars each time list-items inside the element are changed.
Setting the value to true, will update scrollbars each time any element is changed.
To disable (default) set to false.
advanced:{ extraDraggableSelectors: "string" }
Add extra selector(s) that’ll release scrollbar dragging upon mouseup, pointerup, touchend etc.
Example: extraDraggableSelectors: ".myClass, #myID"
advanced:{ releaseDraggableSelectors: "string" }
Add extra selector(s) that’ll allow scrollbar dragging upon mousemove/up, pointermove/up, touchend etc.
Example: releaseDraggableSelectors: ".myClass, #myID"
advanced:{ autoUpdateTimeout: integer }
Set the auto-update timeout in milliseconds.
Default timeout: 60
theme: "string"
Set the scrollbar theme.
View all ready-to-use themes
All themes are contained in plugin’s CSS file (jquery.mCustomScrollbar.css).
Default theme: "light"
callbacks:{
      onCreate: function(){}
}
A function to call when plugin markup is created.
Example:
callbacks:{
    onCreate:function(){
      console.log("Plugin markup generated");
    }
}
callbacks:{
      onInit: function(){}
}
A function to call when scrollbars have initialized (demo).
Example:
callbacks:{
    onInit:function(){
      console.log("Scrollbars initialized");
    }
}
callbacks:{
      onScrollStart: function(){}
}
A function to call when scrolling starts (demo).
Example:
callbacks:{
    onScrollStart:function(){
      console.log("Scrolling started...");
    }
}
callbacks:{
      onScroll: function(){}
}
A function to call when scrolling is completed (demo).
Example:
callbacks:{
    onScroll:function(){
      console.log("Content scrolled...");
    }
}
callbacks:{
      whileScrolling: function(){}
}
A function to call while scrolling is active (demo).
Example:
callbacks:{
    whileScrolling:function(){
      console.log("Scrolling...");
    }
}
callbacks:{
      onTotalScroll: function(){}
}
A function to call when scrolling is completed and content is scrolled all the way to the end (bottom/right) (demo).
Example:
callbacks:{
    onTotalScroll:function(){
      console.log("Scrolled to end of content.");
    }
}
callbacks:{
      onTotalScrollBack: function(){}
}
A function to call when scrolling is completed and content is scrolled back to the beginning (top/left) (demo).
Example:
callbacks:{
    onTotalScrollBack:function(){
      console.log("Scrolled back to the beginning of content.");
    }
}
callbacks:{
      onTotalScrollOffset: integer
}
Set an offset for the onTotalScroll option.
For example, setting onTotalScrollOffset: 100 will trigger the onTotalScroll callback 100 pixels before the end of scrolling is reached.
callbacks:{
      onTotalScrollBackOffset: integer
}
Set an offset for the onTotalScrollBack option.
For example, setting onTotalScrollBackOffset: 100 will trigger the onTotalScrollBack callback 100 pixels before the beginning of scrolling is reached.
callbacks:{
      alwaysTriggerOffsets: boolean
}
Set the behavior of calling onTotalScroll and onTotalScrollBack offsets.
By default, callback offsets will trigger repeatedly while content is scrolling within the offsets.
Set alwaysTriggerOffsets: false when you need to trigger onTotalScroll and onTotalScrollBack callbacks once, each time scroll end or beginning is reached.
callbacks:{
      onOverflowY: function(){}
}
A function to call when content becomes long enough and vertical scrollbar is added.
Example:
callbacks:{
    onOverflowY:function(){
      console.log("Vertical scrolling required");
    }
}
callbacks:{
      onOverflowX: function(){}
}
A function to call when content becomes wide enough and horizontal scrollbar is added.
Example:
callbacks:{
    onOverflowX:function(){
      console.log("Horizontal scrolling required");
    }
}
callbacks:{
      onOverflowYNone: function(){}
}
A function to call when content becomes short enough and vertical scrollbar is removed.
Example:
callbacks:{
    onOverflowYNone:function(){
      console.log("Vertical scrolling is not required");
    }
}
callbacks:{
      onOverflowXNone: function(){}
}
A function to call when content becomes narrow enough and horizontal scrollbar is removed.
Example:
callbacks:{
    onOverflowXNone:function(){
      console.log("Horizontal scrolling is not required");
    }
}
callbacks:{
      onBeforeUpdate: function(){}
}
A function to call right before scrollbar(s) are updated.
Example:
callbacks:{
    onBeforeUpdate:function(){
      console.log("Scrollbars will update");
    }
}
callbacks:{
      onUpdate: function(){}
}
A function to call when scrollbar(s) are updated.
Example:
callbacks:{
    onUpdate:function(){
      console.log("Scrollbars updated");
    }
}
callbacks:{
      onImageLoad: function(){}
}
A function to call each time an image inside the element is fully loaded and scrollbar(s) are updated.
Example:
callbacks:{
    onImageLoad:function(){
      console.log("Image loaded");
    }
}
callbacks:{
      onSelectorChange: function(){}
}
A function to call each time a type of element is added, removed or changes its size and scrollbar(s) are updated.
Example:
callbacks:{
    onSelectorChange:function(){
      console.log("Scrollbars updated");
    }
}
live: "string"
Enable or disable applying scrollbar(s) on all elements matching the current selector, now and in the future.
Set live: true when you need to add scrollbar(s) on elements that do not yet exist in the page. These could be elements added by other scripts or plugins after some action by the user takes place (e.g. lightbox markup may not exist untill the user clicks a link).
If you need at any time to disable or enable the live option, set live: "off" and "on" respectively.
You can also tell the script to disable live option after the first invocation by setting live: "once".
liveSelector: "string"
Set the matching set of elements (instead of the current selector) to add scrollbar(s), now and in the future.

Plugin methods

Ways to execute various plugin actions programmatically from within your script(s).

update

Usage $(selector).mCustomScrollbar("update");

Call the update method to manually update existing scrollbars to accommodate new content or resized element(s). This method is by default called automatically by the script (via updateOnContentResize option) when the element itself, its content or scrollbar size changes.

view examples

/* initialize plugin with auto-update options disabled */
$(selector).mCustomScrollbar({
  advanced:{
    updateOnContentResize: false,
    updateOnImageLoad: false
  }
});

/* at some point in your js script/code update scrollbar manually */
$(selector).mCustomScrollbar("update");

scrollTo

Usage $(selector).mCustomScrollbar("scrollTo",position,options);

Call the scrollTo method to programmatically scroll the content to the position parameter (demo).

position parameter

Position parameter can be:

  • "string"
    • e.g. element selector: "#element-id"
    • e.g. special pre-defined position: "bottom"
    • e.g. number of pixels less/more: "-=100"/"+=100"
  • integer
    • e.g. number of pixels: 100
  • [array]
    • e.g. different y/x position: [100,50]
  • object/function
    • e.g. jQuery object: $("#element-id")
    • e.g. js object: document.getelementbyid("element-id")
    • e.g. function: function(){ return 100; }

Pre-defined position strings:

  • "bottom" – scroll to bottom
  • "top" – scroll to top
  • "right" – scroll to right
  • "left" – scroll to left
  • "first" – scroll to the position of the first element within content
  • "last" – scroll to the position of the last element within content

view examples

Scroll to element with id “#el-1″

$(selector).mCustomScrollbar("scrollTo","#el-1");

Scroll to top

$(selector).mCustomScrollbar("scrollTo","top");

Scroll by 100 pixels down or right

var val=100;
$(selector).mCustomScrollbar("scrollTo","-="+val);

Scroll by 100 pixels up or left

$(selector).mCustomScrollbar("scrollTo","+=100");

Scroll by 100 pixels down and by 50 pixels right

$(selector).mCustomScrollbar("scrollTo",["-=100","-=50"]);

Scroll to the fifth paragraph

$(selector).mCustomScrollbar("scrollTo",$("p:eq(4)"));

Scroll to the last element within your content

$(selector).mCustomScrollbar("scrollTo","last");

Scroll to some variable value

var val=document.getelementbyid("element-id");
$(selector).mCustomScrollbar("scrollTo",val);

Scroll to 300 pixels

$(selector).mCustomScrollbar("scrollTo",300);

Method options

scrollInertia: integer
Scroll-to duration, value in milliseconds.
Example:
$(selector).mCustomScrollbar("scrollTo","bottom",{
    scrollInertia:3000
});
scrollEasing: "string"
Scroll-to animation easing, values: "linear", "easeOut", "easeInOut".
Example:
$(selector).mCustomScrollbar("scrollTo","bottom",{
    scrollEasing:"easeOut"
});
moveDragger: boolean
Scroll scrollbar dragger (instead of content).
Example:
$(selector).mCustomScrollbar("scrollTo",80,{
    moveDragger:true
});
timeout: integer
Set a timeout for the method (the default timeout is 60 ms in order to work with automatic scrollbar update), value in milliseconds.
Example:
$(selector).mCustomScrollbar("scrollTo","top",{
    timeout:1000
});
callbacks: boolean
Trigger user defined callbacks after scroll-to completes.
Example:
$(selector).mCustomScrollbar("scrollTo","left",{
    callbacks:false
});

stop

Usage $(selector).mCustomScrollbar("stop");

Stops any running scrolling animations (usefull when you wish to interupt a previously scrollTo method call).

disable

Usage $(selector).mCustomScrollbar("disable");

Calling disable method will temporarily disable the scrollbar (demo). Disabled scrollbars can be re-enable by calling the update method.

To disable the scrollbar and reset its content position, set the method’s reset parameter to true

$(selector).mCustomScrollbar("disable",true);

view examples

/* initialize plugin */
$(selector).mCustomScrollbar();

/* at some point in your js script/code disable scrollbar */
$(selector).mCustomScrollbar("disable");

/* re-enable scrollbar as needed */
$(selector).mCustomScrollbar("update");

destroy

Usage $(selector).mCustomScrollbar("destroy");

Calling destroy method will completely remove the custom scrollbar and return the element to its original state (demo).

view examples

/* initialize plugin */
$(selector).mCustomScrollbar();

/* at some point in your js script/code destroy scrollbar */
$(selector).mCustomScrollbar("destroy");

Scrollbar styling & themes

You can design and visually customize your scrollbars with pure CSS, using jquery.mCustomScrollbar.css which contains the default/basic styling and all scrollbar themes.

The easiest/quickest way is to select a ready-to-use scrollbar theme. For example:

$(selector).mCustomScrollbar({
  theme:"dark"
});

View all ready-to-use themes

You can modify the default styling or any theme either directly in jquery.mCustomScrollbar.css or by overwriting the CSS rules in another stylesheet.

Creating a new scrollbar theme

Create a name for your theme (e.g. “my-theme”) and set it as the value of the theme option

$(selector).mCustomScrollbar({
    theme:"my-theme"
});

Your element will get the class “mCS-my-theme” (your theme-name with “mCS” prefix), so you can create your CSS using the .mCS-my-theme in your rules. For instance:

.mCS-my-theme.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: red; }
.mCS-my-theme.mCSB_scrollTools .mCSB_draggerRail{ background-color: white; } 
/* and so on... */

In the same manner you can clone any existing theme (e.g. “dark”), change its selector (e.g. .mCS-dark) to your own theme name (e.g. .mCS-my-theme) and modify its CSS rules.

Scrollbar markup

The plugin applies specific id (unique) and/or classes to every scrollbar element/component, meaning that you can target and modify any scrollbar in more than one ways.

For example, every element with a scrollbar gets a unique class in the form of _mCS_1, _mCS_2 etc. Every scrollbar container element gets a unique id in the form of mCSB_1_scrollbar_vertical, mCSB_2_scrollbar_vertical etc. Every scrollbar dragger gets a unique id in the form of mCSB_1_dragger_vertical, mCSB_2_dragger_vertical etc. in addition to the class mCSB_dragger. All these mean that you can do stuff like:

._mCS_1 .mCSB_dragger .mCSB_dragger_bar{ background-color: red; }

._mCS_2 .mCSB_dragger .mCSB_dragger_bar{ background-color: green; }

#mCSB_3_dragger_vertical .mCSB_dragger_bar{ background-color: blue; }

#mCSB_1_scrollbar_vertical .mCSB_dragger{ height: 100px; }

#mCSB_1_scrollbar_horizontal .mCSB_dragger{ width: 100px; }

.mCSB_1_scrollbar .mCSB_dragger .mCSB_draggerRail{ width: 4px; }

Custom scrollbar layout

User-defined callbacks

You can trigger your own js function(s) by calling them inside mCustomScrollbar callbacks option parameter

$(".content").mCustomScrollbar({
    callbacks:{
        onScroll:function(){
            myCustomFn(this);
        }
    }
});

function myCustomFn(el){
    console.log(el.mcs.top);
}

In the example above, each time a scroll event ends and content has stopped scrolling, the content’s top position will be logged in browser’s console. There are available callbacks for each step of the scrolling event:

  • onScrollStart – triggers the moment a scroll event starts
  • whileScrolling – triggers while scroll event is running
  • onScroll – triggers when a scroll event completes
  • onTotalScroll – triggers when content has scrolled all the way to bottom or right
  • onTotalScrollBack – triggers when content has scrolled all the way back to top or left

You can set an offset value (pixels) for both onTotalScroll and onTotalScrollBack by setting onTotalScrollOffset and onTotalScrollBackOffset respectively (view example).

The following will trigger the callback function when content has scrolled to bottom minus 100 pixels

$(".content").mCustomScrollbar({
    callbacks:{
        onTotalScroll:function(){
            console.log("scrolled to bottom");
        },
    onTotalScrollOffset:100
    }
});

By default, onTotalScroll and onTotalScrollBack callbacks are triggered repeatedly. To prevent multiple calls when content is within their offset, set alwaysTriggerOffsets option to false (view example).

$(".content").mCustomScrollbar({
    callbacks:{
        onTotalScroll:function(){
            console.log("scrolled to bottom");
        },
    onTotalScrollOffset:100,
    alwaysTriggerOffsets:false
    }
});

Additional callbacks:

Returning values

The script returns a number of values and objects related to scrollbar that you can use in your own functions

  • this – the original element containing the scrollbar(s)
  • this.mcs.content – the original content wrapper as jquery object
  • this.mcs.top – content’s top position (pixels)
  • this.mcs.left – content’s left position (pixels)
  • this.mcs.draggerTop – scrollbar dragger’s top position (pixels)
  • this.mcs.draggerLeft – scrollbar dragger’s left position (pixels)
  • this.mcs.topPct – content vertical scrolling percentage
  • this.mcs.leftPct – content horizontal scrolling percentage
  • this.mcs.direction – content’s scrolling direction (y or x)

view examples

Load more content when scrolled to bottom

$(selector).mCustomScrollbar({
    callbacks:{
        onTotalScroll:function(){
            this.mcs.content.append("...");
        }
    }
});

Run code when at least half of the content is scrolled

$(selector).mCustomScrollbar({
    callbacks:{
        whileScrolling:function(){
            var pct=this.mcs.topPct;
            if(pct>=50){
              /* do something... */
            }
        }
    }
});

Plugin-specific jQuery expressions

$("#myID:mcsInView")
Select element(s) in your content that are within scrollable viewport.
As condition: $("#myID").is(":mcsInView");
$(".content:mcsOverflow")
Select overflowed element(s) with visible scrollbar.
As condition: $(".content").is(":mcsOverflow");
$("#myID:mcsInSight")
$("#myID:mcsInSight(exact)")
Select element(s) in your content that are in view of the scrollable viewport. Using the exact parameter will include elements that have any part of them (even 1 pixel) in view of the scrollable viewport.
As condition: $("#myID").is(":mcsInSight");, $("#myID").is(":mcsInSight(exact)");

Plugin dependencies & requirements

License

This work is released under the MIT License.
You are free to use, study, improve and modify it wherever and however you like.
https://opensource.org/licenses/MIT

Pages: 1 2 3 4


5,630 Comments

Post a comment

Comments pages: 1 36 37 38 39 40 85

  1. Kenvinl
    Posted on May 26, 2013 at 12:58 Permalink

    Hi,

    I am trying to use both vertical and horizontal stroll in my dialog. But i saw that it just only show the horizontal stroll when i set horizontalstroll:true and only vertical stroll when set it false. Could you please help me to solved this problem.

    Reply
    • malihu
      Posted on May 29, 2013 at 09:03 Permalink

      The plugin currently does not support both axis scrollbars on the same element. I’ll add this feature on the next major version.

      Reply
      • Amir
        Posted on May 29, 2013 at 18:25 Permalink

        Is there anything in the works as in beta that is out? I could really use both vertical and horizontal scroll for a project I am working on. Thanks!

        Reply
  2. 没位道
    Posted on May 26, 2013 at 06:04 Permalink

    This is a best scroller plugins, Thanks you!

    Reply
  3. Cameron Lwis
    Posted on May 26, 2013 at 00:40 Permalink

    Great Plugin! When using this on a touch enabled device (in this example, and iPad) is there a few to have it so when you scroll it has the flow part at the end of the scroll, currently when you scroll, as soon as you stop the scrolling stops, which is not very true life feel? So when you flick your finger it scrolls threw a large chunk?

    Reply
  4. Fabian
    Posted on May 25, 2013 at 02:26 Permalink

    Hi awesome plugin !!
    I’m having a little problem I have to scrolls in my page and whenever I reach to the bottom of each they get stuck and won’t scroll up using the scroll wheel. This usually happens when I clear cache. If I press F12 it fixes itself so its kinda weird. Maybe I have the loading of the events in the wrong order or something like ?

    http://gravitonbit.com/test/event/edificio-metalico/

    Reply
    • malihu
      Posted on May 25, 2013 at 12:30 Permalink

      Hi,
      Try calling mCustomScrollbar on window load (instead of document ready). This makes sure all content inside is fully loaded. Also try moving scrollbar.js below other scripts or at the bottom of your document (just before the closing body tag).

      Reply
  5. Andre
    Posted on May 22, 2013 at 16:40 Permalink

    Hello there! Thanks for the great plugin.

    I have used your scroller several times and I love it.

    I have one doubt though, wonder if you can help me?

    How should I do so when the user presses the keyboard “right” or “left” key, the content scrolls in the direction they pressed?

    Thank you so very very much!

    Reply
  6. Sandeep Choudhary
    Posted on May 22, 2013 at 15:02 Permalink

    Hi, Thanks for the awesome plugin. I just have one small query.

    Scenario: A textarea with a scrollbar inside body with a scrollbar.

    Issue: Scrollbar is not very smooth and when I have a textarea with scrollbar, the scrollbar on the body outside doesn’t work at all.

    This is how I have used textarea scrollbar

    var width=$(textareaSelector).outerWidth(); var height=$(textareaSelector).outerHeight(); $(textareaSelector).wrap("<div class='berlin-textarea-wrapper'/>"); $(textareaSelector).parent().css('height', height).css('width', width).css('overflow', 'auto'); var scrollableEl = $(textareaSelector).parent(); if(scrollableEl && !scrollableEl.hasClass('content')){ scrollableEl.addClass('content').mCustomScrollbar({ scrollButtons:{ enable: true }, advanced:{ updateOnBrowserResize:true, /*update scrollbars on browser resize (for layouts based on percentages): boolean*/ updateOnContentResize:true, /*auto-update scrollbars on content resize (for dynamic content): boolean*/ autoExpandHorizontalScroll:false, /*auto expand width for horizontal scrolling: boolean*/ autoScrollOnFocus:true, /*auto-scroll on focused elements: boolean*/ contentTouchScroll: true } }); } var textareaClone=$('<div style="word-wrap:break-word" />').appendTo($(textareaSelector).parent()); var copyAttributes=['font-family','font-size','font-weight','letter-spacing','word-spacing','line-height','width']; for (var i = 0; i < copyAttributes.length; i++) { textareaClone.css(copyAttributes[i], $(textareaSelector).css(copyAttributes[i])); } textareaClone.html('&nbsp;'); var heightPerRow = textareaClone.height(); textareaClone.html($(textareaSelector).val().replace(/\n/g,'<br />')); var overallHeight = textareaClone.height(); $(textareaSelector).attr('rows', Math.round(overallHeight / heightPerRow)); $(textareaSelector).css('height', 'auto'); // textareaClone.html($(textareaSelector).val().substring(0, range.end).replace(/\n/g,'<br />') + '&nbsp;'); textareaClone.remove();

    Can you please help me out with this ? As what could be the issue. Why the body scrollbar stopped working when I apply scrollbar to textarea

    Reply
    • Sandeep Choudhary
      Posted on May 23, 2013 at 08:28 Permalink

      Ok it’s resolved. I was using old plulgin of urs and seems that you have resolved it in your latest plugin. 🙂

      Reply
  7. jack
    Posted on May 22, 2013 at 11:04 Permalink

    There is an issue with autohide,

    If you have the scrollbar attached to a div (e.g. body) and nother scrollbar inside that div then even with autohide, the topmost scrollbar will always show.

    Would it be possible to make it so autohide would hide the scrollbar always and only show it while scrolling with a fadein/out effect like it happens with mobile scrollbars? Or maybe make it a new option,

    autoHide: false //always show
    autoHide: ‘hover’ //show on hover and scrolling
    autoHide: ‘scroll’ //show while scrolling only

    Also a autoHideEffect would be useful for specifying the show/hide effect.

    autoHideEffect: false //instantly show/hide on autohide
    autoHideEffect: ‘fade’ //fade in/out on autohide

    Reply
    • malihu
      Posted on May 27, 2013 at 00:23 Permalink

      I’ll consider adding such option on the next version, although showing the scrollbar only while scrolling is not very user-friendly (a user should normally be aware the is more content to scroll before actually starts scrolling).

      Reply
  8. Rafal Again...
    Posted on May 21, 2013 at 20:21 Permalink

    Hello Again,
    I’ve got a little problem.. i’m using scroll bar on my “content” page so when scroll first page to bottom, all others sites opens on bottom. Please help me.

    Reply
  9. Jake
    Posted on May 21, 2013 at 17:28 Permalink

    Hi,
    I’m trying to completely prevent any scrolling from happening when the scroll buttons are click, unless certain conditions are met. I’ve gotten it close, but it still scrolls down maybe 5-7 pixels or so. I’m preventDefault’ing and using the “stop” method. This residual scrolling also doesn’t seem to have any smooth animation like normal scrolling for the plugin, seems to happen instaneously. Any thoughts?

    Thanks

    Reply
    • Jake
      Posted on May 21, 2013 at 17:42 Permalink

      Think I got it. Set the scrollType to “pixels”, set the scrollAmount to “0”. Then let different functions handle the scrolling.

      Reply
  10. Iago
    Posted on May 21, 2013 at 11:57 Permalink

    Hi,

    Thanks for the plugin, but I have a problem with it. When the scroll reaches the end activates the browser’s scroll. Is there any way to lock the browser scroll while the mouse is over the div that has the customScrollbar?

    Kind regards and thanks for your job,
    Iago

    Reply
    • Radilson
      Posted on May 29, 2013 at 16:44 Permalink

      I wanna know how to fix this too! I want it to behaved like the new Facebook sidebar… when the scroll div reaches the end, the page scroll must stop.

      Reply
    • Karvapallo
      Posted on June 18, 2013 at 14:56 Permalink

      Same issue. Would need to be able to stop the scroll event from propagating to the window even when the scrolling has reached the end.

      Reply
  11. Janey Smith
    Posted on May 21, 2013 at 08:32 Permalink

    Malihu, awesome script! out of all the other ones on the net, it’s the sleekest looking, finally got it implemented tonight and loving it, many thanks for your work!

    I’m having a bit of a problem (I’m kind of a beginner), wondering if you could shed some light if you have a moment….

    I’m applying the plugin to a div that is hidden/expanded via fadeToggle and every time I click on the link that toggles the div to expand another scroll bar appears until there’s 2,3,4,5…etc scroll bars in the div and they crowd out the content – do you have any idea what might be making this happen?

    A million thank yous for any suggestions 🙂

    Reply
  12. Peter Reiner
    Posted on May 21, 2013 at 01:11 Permalink

    Hi Malihu – I am just baffled by this problem. Could you take a look at my site http://drumprofessor.net? From the homepage navigation bar, please click on the “testimonials” button. A page that includes your scrollbar will slide into view. Scroll down about halfway until you get to the testimony (text in red) of “Glen G. Gates”. I created two hotspots here, one on his email address, the other for his website. When I click on either hotspot, instead of being taken to the page or email, the scroller takes me halfway up the page again. I’ve tried every variation or trick I can think of. Any idea what I am missing? Thanks very much. from Peter

    Reply
    • Peter Reiner
      Posted on May 21, 2013 at 01:54 Permalink

      solved the problem just now with:

      advanced:{
      autoScrollOnFocus: Boolean
      }

      Thank you!

      Reply
  13. Jorgen
    Posted on May 20, 2013 at 17:49 Permalink

    Hi

    I’ve just downloaded your script and try to make it work. The first thing I’ve noticed is the mousewheel scrolling. It works perfectly when scrolling down, but I cannot scroll up. It works sometimes, but most times it doesn’t.

    My test sample is as simple as can be with a surrounding some simple content. I am testing in IE10, Win8.

    Do you have any ideas of what might be wrong?

    Reply
    • Jorgen
      Posted on May 20, 2013 at 17:52 Permalink

      …and that should be…
      My test sample is as simple as can be with a [div class=’scrollbar’] surrounding some simple content.

      Reply
    • Jorgen
      Posted on May 20, 2013 at 17:57 Permalink

      OK, I may have found a bug. Scrolling up with the mousewheel only Works as long as I don’t scroll all the way to the bottom of my content. After hitting the bottom it’s game over for the mousewheel.

      Hope you can replicate and fix it 🙂

      Reply
    • Foolish Jorgen
      Posted on May 20, 2013 at 18:13 Permalink

      Don’t worry, it works – my fault of course! 🙂

      Reply
      • malihu
        Posted on May 20, 2013 at 19:06 Permalink

        lol @ the name
        No problem 🙂

        Reply
  14. Krishna Teja Kesineni
    Posted on May 20, 2013 at 15:36 Permalink

    Hi,

    My requirement is that i have to add horizontal and vertical scroll for a same container plz help me in that..

    thanks
    Teja

    Reply
    • malihu
      Posted on May 20, 2013 at 19:08 Permalink

      The plugin currently does not support both axis scrollbars on the same element. I’ll add this feature on the next major version.

      Reply
      • Teja Kesineni
        Posted on May 21, 2013 at 06:57 Permalink

        Do we know when would be the next major release out to the world? Is there any workaround for getting both the scrollbars? We are planning to mimic the code, is it worth doing it? If the this is not possible we may look into another plugin. Please suggest

        Reply
  15. rafal
    Posted on May 20, 2013 at 10:52 Permalink

    Hey There,
    This plugin is great! But i’ve got a little problem.. when resize of my window, can’t use horizontal scroll only vertical.
    Second problem: i’m using scroll bar on my “content” page so when scroll first page to bottom, all others sites opens on bottom. Please help me.
    Btw sorry for my english -.-

    Reply
    • rafal
      Posted on May 21, 2013 at 18:52 Permalink

      please help me

      Reply
  16. Hardy
    Posted on May 19, 2013 at 18:57 Permalink

    $(“#chat_container”).mCustomScrollbar({
    autoHideScrollbar:true,

    scrollButtons:{
    enable:true
    },
    theme:”dark-thick”
    });

    Please…………………….
    How to make this stay on bottom?

    Reply
    • rafal
      Posted on May 21, 2013 at 19:06 Permalink

      horizontalScroll:true;

      Reply
  17. Falk Fiedler
    Posted on May 19, 2013 at 18:29 Permalink

    Hi, thanks for this great plugin.

    Can I also own scroll buttons – outside the scrollable area – use the scroll function and assign them via jquery?

    thank you

    falk

    Reply
  18. Rohan
    Posted on May 19, 2013 at 14:02 Permalink

    I am facing a problem… I have a form inside a wrapper and I called the scroller on wrapper. I worked fine but when I focus on any input field it automatically scrolls back to top. Please help.

    Reply
    • malihu
      Posted on May 19, 2013 at 15:26 Permalink

      This probably happens due to some CSS positioning of input fields being off…
      You can disable auto-scrolling on focus by setting autoScrollOnFocus to false (see Configuration).

      Reply
  19. Alex
    Posted on May 19, 2013 at 10:26 Permalink

    this script is shit. code is too big and incomprehensible !

    for begginers like me it’s just shit !

    why people use this longest script only for scrolling ?!

    Reply
    • malihu
      Posted on May 19, 2013 at 16:04 Permalink

      Hello Alex,

      This script is a plugin, not a tutorial. Its purpose is to plug-it in a project and work. In my opinion, for the amount of features it has and the things you can do with it, its size is not that big.

      People use this plugin because they usually require extra functionality (scroll-to, touch support, nested scrollbars, user defined callback functions etc.) and this script provides them.

      The guides for using and implementing the plugin are fairly simple. If you want to study its source code, you’re more than welcome but the script itself is pretty advanced and not really for beginners in javascript/jQuery (no custom scrollbar script is suited for beginners).

      Thanks for the feedback

      Reply
  20. Peter Reiner
    Posted on May 18, 2013 at 02:58 Permalink

    I’m enjoying your plugin but I’m having trouble when creating hotspots on an image. The page just scrolls upward slowly. If I click very fast, the hotspots work. I must be missing something …

    Reply
  21. Ankit Parikh
    Posted on May 17, 2013 at 14:55 Permalink

    Actually i am applying this scrollbar to a div contained inside body. On page load i set body to display none after 1 sec i set it to display block. But after display block neither my div nor my scrollbar is visible. I tried calling update after the delay but no luck..

    Reply
  22. Devin Walker
    Posted on May 17, 2013 at 00:36 Permalink

    This plugin looks fantastic. I had an issue using it within tabs but figured out how I could initialize the tabs upon each tab control fix. The easing really makes the scrolling super smooth!

    Reply
    • Todd
      Posted on June 4, 2013 at 20:45 Permalink

      Hi Devin,
      We are trying to get this working with TABS as well but haven’t been able to get it working yet. Saw your post and figured I should ask you since you already came up with a solution- Could you please post/send an example of what you came up with?

      Thanks 🙂

      Reply
      • malihu
        Posted on June 4, 2013 at 22:52 Permalink

        The most common method would be to call mCustomScrollbar on each tab with the updateOnContentResize option parameter set to true. Alternately, and depending on your tabs design, you can call mCustomScrollbar on an outer container with either updateOnContentResize option parameter set to true or manually call the update method every time you click a tab.

        Reply
  23. chandana
    Posted on May 15, 2013 at 14:48 Permalink

    scroll bar appearing fine on page load. but when i click any button in a web page automatically mcustomscrollbar disappears and the default scroll bar get appears. i used scroll bar for datalist item. scroll bar disappear while clicking any item in data list and also getting disapper if i click any other button in a web page. kindly help in resolving this issue.

    Reply
  24. Sylvie
    Posted on May 15, 2013 at 12:29 Permalink

    Hi,
    This is a great plugin and without being an expert, i make it work without problem!
    I just have two questions and one problem.
    Is it possible to make it work with Jquery prettyphoto which dunamically construct an iframe ? I can’t make it works at the moment (using $(“iframe”).mCustomScrollbar({… and even when the iframe as an “id” )…

    But my more urgent problem is to know ik it’s possible to make an element inside the container with the scrollbar, appear in the center of the container space (or go to top).
    I’m using WordPress and I apply the CustomScrollbar to a div which contains a list (ul) with (li) which are dynamically construct by a wordpress loop. This list is placed to the left of the content of the current product browsing. I display all of that on product page, and the list is pretty long… I would have the current element ( which is highlight with css) at the top of the list, is it possible ? Someone could help me on this way, please ?
    I will really appreciate your help, cause i’m lost…
    Many thanks !
    Sylvie

    <script> (function($){ $(window).load(function(){ $("#content-cat-left").mCustomScrollbar({ mouseWheel:true, theme:"dark-thick", scrollButtons:{enable:true, scrollType:"pixels", scrollAmount:200 }, scrollInertia: 0, advanced:{updateOnContentResize: true}, callbacks:{onTotalScrollOffset:100} }); }); })(jQuery); </script> Part of my page <ul id="menu-toggle"> <li <?php if($currentpost == $post->ID) { echo ' class="current"'; } ?>> <div class="show-content-bt"> <?php if( get_field('photo_produit_1') ):?> <div class="photo-prod"> <img src="<?php echo bloginfo('template_url'); ?>/timthumb.php?src=<?php echo get_field('photo_produit_1') ?>&w=57&h=57&zc=1&q=100&a=t" alt="<?php the_title(); ?>" width="57" height="57" alt="<?php the_title(); ?>" /> </div> <?php else: endif;?> <a href="<?php the_permalink(); ?>"><h2><?php the_title(); ?></h2></a> </div> <?php endwhile; ?> <?php wp_reset_postdata(); // reset the query ?> </li> </ul> <!-- End of #menu-toggle -->

    Reply
  25. Daniel S
    Posted on May 14, 2013 at 23:15 Permalink

    Hello Malihu, thank you very much for your plugin. Here’s my question:
    I am having problems making it work with bbq in a div ajax content.
    I tried several ways and I always get different behaviors.
    In this case the first default content loads the scrollbar correctly but following a link and loading ajax content no scrollbar is displayed at all (loaded data exceeds div height).
    Back button works okay but going to the first default page: div#content is hidden

    Thank for help.

    (function($){
    $(window).load(function(){
    $(“#content”).mCustomScrollbar({
    theme:”dark-2″,
    advanced:{
    updateOnContentResize: true
    },
    mouseWheelPixels:300,
    scrollButtons:{
    enable:false,
    scrollSpeed: “auto”
    }
    });
    //$(“#content”).mCustomScrollbar(“update”); //update scrollbar according to newly loaded content
    //$(“#content”).mCustomScrollbar(“scrollTo”,”top”,{scrollInertia:200}); //scroll to top
    });
    })(jQuery);

    $(function(){
    var cache = {
    ”: $(‘.bbq-default’),
    ‘#’:$(‘.bbq-default’)
    };
    $(window).bind( ‘hashchange’, function(e) {
    var url = $.param.fragment();
    $( ‘a.bbq-current’ ).removeClass( ‘bbq-current’ );
    $( ‘#content’ ).children( ‘:visible’ ).hide();
    url && $( ‘a[href=”#’ + url + ‘”]’ ).addClass( ‘bbq-current’ );

    if ( cache[ url ] ) {
    cache[ url ].show();
    }
    else {
    $( ‘.bbq-loading’ ).show();
    cache[ url ] = $( ” )
    .appendTo( ‘#content’ )
    .load( url, function(){
    // Content loaded, hide “loading” content.
    $( ‘.bbq-loading’ ).hide();
    $(“#content”).hide();
    $(“#content”).fadeIn();
    $(“#content”).mCustomScrollbar(“update”);
    //$(“#content”).mCustomScrollbar(“scrollTo”,”top”,{scrollInertia:200});
    });
    }
    })
    $(window).trigger( ‘hashchange’ );
    });

    Reply
  26. Andrea22k
    Posted on May 13, 2013 at 12:13 Permalink

    http://jsfiddle.net/sqfcX/
    could someone help me about this stuff?
    Basically, open your browser console. Then rotate your screen using (CTRL+ALT+LEFT).
    As you can see value in console doesn’t work properly.
    Otherway, removing the scrollbar from #container div fixes the problem.
    But I need the scrollbar on that div. Any solution?
    Thanks

    Reply
  27. Dominic
    Posted on May 12, 2013 at 22:32 Permalink

    Hi there,

    I’m having a really odd problem with embedded Vimeo / Youtube videos

    I get a very fast flickering iframe instead of the embedded video, see here:

    http://andybarter.com/main/?p=409

    The video plays fine when I disable the scroll bar… any ideas?

    Thanks

    Reply
  28. nisan
    Posted on May 12, 2013 at 20:44 Permalink

    Hi,
    first of all great plugin, the best!

    i have a problem, i have two sides in my layout, the left side have scroll and the right side have scroll too.
    when i scroll the left side it scrolls the right side only, and when i scroll the right side it scroll the right side as it should.

    can u help me to understand why it happen plz?

    Reply
  29. Zoran
    Posted on May 10, 2013 at 14:57 Permalink

    Hi,

    I have an issue after calling scrollTo. Problem is that after calling that method a can’t scroll anymore. It looks like it freezes or something like that. Can you help me with that?

    Reply
  30. DrLightman
    Posted on May 10, 2013 at 13:25 Permalink

    Unfortunately, the plugin is *broken* when used toghether with jquery ui:

    http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js

    Muhc of the code seems to execute but the scrollbars stay with display:none;

    Reply

Comments pages: 1 36 37 38 39 40 85

Post a comment

Your e-mail is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
You can write or copy/paste code directly in your comment using the <code> tag:
<code>code here...</code>
You may also use the data-lang attribute to determine the code language like so:
<code data-lang-html>, <code data-lang-css>, <code data-lang-js> and <code data-lang-php>

css.php