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

jQuery thumbnail scroller

jQuery thumbnail scroller

A thumbnail/image scroller that can be used as standalone or alongside lightboxes, gallery scripts etc. Features include: scrolling by cursor movement, buttons and/or touch, vertical and/or horizontal scrolling, customization via CSS and option parameters, methods for triggering events like scroll-to, update, destroy etc., user-defined callbacks functions and more.

Current version 2.0.3 (Changelog) – Version 1.x.x (no longer actively maintained)

How to use it


Get plugin files. Extract and upload jquery.mThumbnailScroller.min.js and jquery.mThumbnailScroller.css to your web server (more info)

jquery.mThumbnailScroller.min.js is the minified version of the plugin script (jquery.mThumbnailScroller.js) and jquery.mThumbnailScroller.css holds the styling of scroller(s). The archive also contains a number of HTML examples and demos inside examples directory.

Include jquery.mThumbnailScroller.css in the head tag your html document

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

Include jQuery library (if your project doesn’t use it already) and jquery.mThumbnailScroller.min.js in your document’s head or 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=""></script>
<script src="/path/to/jquery.mThumbnailScroller.min.js"></script>

Create the markup with your images, links, etc. which is basically an element (e.g. a div) holding an unordered list (ul)

<div id="my-thumbs-list">
    <li><a href="image-1-link"><img src="/path/to/image-1-file" /></a></li>
    <li><a href="image-2-link"><img src="/path/to/image-2-file" /></a></li>
    <li><a href="image-3-link"><img src="/path/to/image-3-file" /></a></li>
    <li><a href="image-4-link"><img src="/path/to/image-4-file" /></a></li>
    <!-- and so on... -->


Give your element (in the example above #my-thumbs-list) a width and/or height value and a CSS overflow value of auto or hidden. For example:

  overflow: auto;
  width: 800px;
  height: auto;

If you’re creating a vertical scroller, you’ll need to set a height (or max-height) value

  overflow: auto;
  width: 300px;
  height: 500px;


Initialize via javascript

Create a script and call mThumbnailScroller function on your element selector along with the option parameters you want

              axis:"x" //change to "y" for vertical scroller

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 on $(window).load() so it executes after all images are loaded.

You can change the function selector "#my-thumbs-list" to any selector you want. For instance, if you want to create scrollers for all elements with class myClass, you simply do:


You may also have multiple selectors by inserting comma separated values

$(".myClass, #my-thumbs-list").mThumbnailScroller();

When you need multiple selectors with different options for each one, you can do:


Initialize via HTML

If you prefer to initialize the plugin without a script, you can simply give your element the class mThumbnailScroller and optionally set its orientation via the HTML data attribute data-mts-axis ("x" for horizontal and "y" for vertical). For example:

<div id="my-thumbs-list" class="mThumbnailScroller" data-mts-axis="x">
    <!-- your content -->

See code examples on Github

Basic configuration & option parameters

The 2 basic options are axis which defines the scroller orientation and type which defines how the user interacts with the scroller.


The default scroller orientation is horizontal, so if you don’t set an axis option value, it defaults to "x"

$("#my-thumbs-list").mThumbnailScroller({ axis:"x" });

To create a vertical scroller, set axis option to "y"

$("#my-thumbs-list").mThumbnailScroller({ axis:"y" });

or use data-mts-axis="y" if you’re initializing the plugin via HTML


You can set the type of scroller via javascript, for example:

$("#my-thumbs-list").mThumbnailScroller({ type:"hover-50" });

or using the HTML data attribute data-mts-type, e.g.:

<div class="mThumbnailScroller" data-mts-type="hover-50">...</div>

There are 4 basic scroller types:

  1. "hover-[number]" (e.g. "hover-33", "hover-80" etc.)

    Scrolling content in linear mode by hovering the cursor over the scroller edges. The edges are defined by the type name, where [number] indicates the percentage of the scroller area in which scrolling is idle. For example, setting "hover-50" (default value) on a 600 pixels wide horizontal scroller, means that scrolling will be triggered only when the cursor is over the first 150 pixels from the left or right edge. And when cursor is over the 50% of the scroller width (300 pixels), scrolling will be idle or stopped.

  2. hover-precise

    Scrolling content with animation easing (non-linear mode) by hovering the cursor over the scroller. The scrolling speed and direction is directly affected by the cursor movement and position within the scroller.

  3. "click-[number]" (e.g. "click-50", "click-90" etc.)

    Scrolling content by clicking buttons. The scrolling amount is defined by type name, where [number] indicates a percentage of the scroller area. For example, setting "click-50" on a 800 pixels wide horizontal scroller, means that each time you click the left or right arrow buttons, the content will scroll by 400 pixels (50% of 800px) to the left or right.

  4. click-thumb

    Scrolling each image/thumbnail at a time by clicking buttons.

"hover-[number]" and hover-precise types become disabled on touch-enabled devices and replaced by content touch-swipe scrolling.


You can configure your scroller(s) using the following option parameters when calling mThumbnailScroller function
Usage $(selector).mThumbnailScroller({ option: value });

setWidth: false
Set the width of the scroller (overwrites CSS width), value in pixels (integer) or percentage (string).
setHeight: false
Set the height of the scroller (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".
type: "string"
Scroller type defines the way users interact with the scroller.
Available values:

  • "hover-[number]" (e.g. "hover-50")
    Scrolling content in linear mode by hovering the cursor over the scroller edges. The edges are defined by the type name, where [number] indicates the percentage of the scroller area in which scrolling is idle. Scrolling accelerates proportionally according to cursor position: e.g. scrolling speed increases as the cursor moves towards the edges and decreases as it moves towards the center of the scroller area.
  • "hover-precise" Scrolling content with animation easing (non-linear mode) by hovering the cursor over the scroller. The scrolling speed and direction is directly affected by the cursor movement and position within the scroller.
  • click-[number] (e.g. "click-80")
    Scrolling content by clicking buttons. The scrolling amount is defined by type name, where [number] indicates a percentage of the scroller area.
  • "click-thumb" Scrolling each image/thumbnail at a time by clicking buttons. Each click will scroll the content by the width/height of the next non-visible adjusted image.
axis: "string"
Define scroller axis (scrolling orientation).
Available values: "y", "x", "yx".

speed: integer
Set the scrolling speed (higher=faster). Default value is 15.
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 value is 25).
markup:{ thumbnailsContainer: "string" }
Set the element containing your thumbnails. By default, this is an unordered list (ul).
markup:{ thumbnailContainer: "string" }
Set the element containing each thumbnail. By default this is a list-item (li).
markup:{ thumbnailElement: "string" }
Set the actual thumbnail element. By default, this is an image tag (img).
markup:{ buttonsPlaceholder: "string" }
Set the placeholder element of the buttons.
Set buttons HTML content. Default value is "SVG set 1". There are 5 ready-to-use SVG arrows set, that you can use with the values "SVG set 2", "SVG set 3" etc. If you want to use your own button icon, text etc., you can do for example:
      up:"&uarr;", //HTML up-arrow code
      down:"<img src='...' />", //a custom image
      left:">", //plain text
      right:"&rarr;" //HTML right-arrow code
SVG arrows will fallback to HTML codes on IE8.
advanced:{ autoExpandHorizontalScroll: boolean }
Auto-expand content horizontally (for "x" or "yx" axis).
If set to true (default), content will expand horizontally to accomodate any floated/inline-block elements (such as li, a, img etc.).
advanced:{ updateOnContentResize: boolean }
Update scroller(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 scroller(s) automatically each time an image inside the element is fully loaded. The value is true by default.
advanced:{ updateOnSelectorChange: "string" }
Update scroller(s) automatically when the amount and size of specific selectors changes.
Useful when you need to update the scroller(s) automatically, each time a type of element is added, removed or changes its size.
For example, setting updateOnSelectorChange: "ul li" will update the scroller each time list-items inside the element are changed. Setting the value to true, will update the scroller each time any element is changed. To disable (default) set to false.
theme: "string"
Set a ready-to-use scroller theme (plugin’s CSS contains all themes).
      onInit: function(){}
A function/custom code to execute when the scroller has initialized (callbacks demo).
      console.log("scroller initialized");
      onScrollStart: function(){}
A function/custom code to execute when scrolling starts (callbacks demo).
      console.log("scroll started");
      onScroll: function(){}
A function/custom code to execute when scrolling is completed (callbacks demo).
      console.log("scroll completed");
      onTotalScroll: function(){}
A function/custom code to execute when scrolling is completed and content is scrolled all the way to the end (bottom and/or right) (callbacks demo).
      console.log("Scrolled to 100%");
      onTotalScrollBack: function(){}
A function/custom code to execute when scrolling is completed and content is scrolled back to the beginning (top and/or left) (callbacks demo).
      console.log("Scrolled back to 0%");
      onTotalScrollOffset: integer
Set an offset for the onTotalScroll callback option.
For example, setting onTotalScrollOffset: 100 will trigger the onTotalScroll callback 100 pixels before the end of scrolling is reached.
      onTotalScrollBackOffset: integer
Set an offset for the onTotalScrollBack callback option.
For example, setting onTotalScrollBackOffset: 100 will trigger the onTotalScrollBack callback 100 pixels before the beginning of scrolling is reached.
      whileScrolling: function(){}
A function/custom code to execute while scrolling is active (callbacks demo).
      alwaysTriggerOffsets: boolean
Control the way onTotalScroll and onTotalScrollBack offsets execute.
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 only once.
live: boolean, "string"
Enable or disable the creation of scroller(s) on all elements matching the current selector, now and in the future.
Set live: true when you need to add scroller(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.
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 to apply a scroller, now and in the future.

Plugin methods

Methods are ways to execute various scroller actions programmatically from within your script(s).


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

Call the update method to manually update existing scrollers to accomodate new content or resized element(s). This method is by default called automatically by the script (via updateOnContentResize option) when the element itself and/or its content size changes.


Usage $(selector).mThumbnailScroller("scrollTo", position, {options});

Call the scrollTo method to scroll content to the position parameter. Position parameter can be a string (e.g. "#element-id", "bottom", "left" etc.), an integer indicating number of pixels (e.g. 100), an array for y/x axis (e.g. [100,100]), a js/jQuery object, a function etc. method demo

view examples

Scroll to right (end)

$(selector).mThumbnailScroller("scrollTo", "right");

Scroll to the last element within your content

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

Scroll to element with id myID

var to="#myID";
$(selector).mThumbnailScroller("scrollTo", to);

Scroll by 200 pixels

$(selector).mThumbnailScroller("scrollTo", "-=200"); //scroll forward
$(selector).mThumbnailScroller("scrollTo", "+=200"); //scroll backward

scrollTo position parameter

Position parameter can be:

  • "string"
    • Element selector
      For example, scroll to element with id “element-id”:
    • Special pre-defined position
      For example, scroll to right:

      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

    • Number of pixels less/more: (e.g. "-=100"/"+=100")
      For example, scroll by 100 pixels right:
  • integer
    • Number of pixels (from left and/or top)
      For example, scroll to 100 pixels:
  • [array]
    • Different y/x position
      For example, scroll to 100 pixels from top and 50 pixels from left:
  • object/function
    • jQuery object
      For example, scroll to element with id “element-id”:
    • js object
      For example, scroll to element with id “element-id”:
    • function
      For example, scroll to 100 pixels:
      $(selector).mThumbnailScroller("scrollTo",function(){ return 100 });

scrollTo method options

speed: integer
Scrolling speed.
$(selector).mThumbnailScroller("scrollTo", "-=200", {
  speed: 30
duration: integer
Scrolling animation duration, value in milliseconds.
$(selector).mThumbnailScroller("scrollTo", "right", {
  duration: 1000
easing: "string"
Scrolling animation easing, values:

  • "easeInOut"
  • "easeOut"
  • "easeInOutSmooth"
  • "easeOutSmooth"
  • "easeInOutStrong"
  • "easeOutStrong"
  • "easeInOut"
  • "easeInOut"


$(selector).mThumbnailScroller("scrollTo", 300, {
  easing: "easeOutSmooth"
callbacks: boolean
Trigger user defined callbacks after scroll-to event is completed, values: true, false.
$(selector).mThumbnailScroller("scrollTo", "top", {
  callbacks: false
timeout: integer
Method timeout (delay). The default timeout is 60 (milliseconds) in order to work with automatic scroller update functionality, value in milliseconds.
$(selector).mThumbnailScroller("scrollTo", "last", {
  timeout: 0 //no timeout


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

Stops running scrolling animations. Usefull when you wish to interrupt a previously scrollTo call.


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

Calling disable method will temporarily disable the scroller(s). Disabled scrollers can be re-enabled by calling the update method.

To disable a scroller and reset its content position, call the method by setting its reset parameter to true:

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

method demo


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

Calling destroy method will completely remove the scroller and return the element to its original state.

method demo

Scroller styling & themes

You can style your scroller(s) using jquery.mThumbnailScroller.css which contains the basic/default styling and few ready-to-use themes.

You can modify the default styling or an existing scroller theme directly, clone a theme and change it to your needs or overwrite the CSS in another stylesheet. If you wish to maintain compatibility with future plugin versions (that may include an updated version of jquery.mThumbnailScroller.css), I recommend using your own custom (or cloned) theme (creating your own custom theme), or overwriting the CSS. This way you can always upgrade jquery.mThumbnailScroller.css without having to redo your changes.


Plugin’s CSS includes a number of ready-to-use themes for quickly applying a basic styling to your scroller(s). To apply a theme, use theme option parameter:

    theme: "theme-name"

or the HTML data attribute data-mts-theme in your markup:

<div class="mThumbnailScroller" data-mts-theme="theme-name">...</div>

themes list


A theme to use in conjunction with any scroller type using buttons. Uses a specific SVG set of custom styled buttons placed inside the scrolling area (see the theme in the demo). Example:



A theme to use in conjunction with any scroller type using buttons. Uses a specific SVG set of custom styled buttons placed outside of the scrolling area (see the theme in the demo). The buttons in this theme are appended directly inside your element, meaning that the element must have a non-static CSS position (the plugin script changes this automatically) and a left/right (or top/bottom) padding in order for the buttons to display as intended. Example:

  position: relative;
  padding: 0 55px;


A theme which uses hover-precise scroller type (overwrites type option). It applies a left/right (or top/bottom) margin on the first and last images for better usability (see the theme in this example). Example:



A theme which uses hover-85 scroller type (overwrites type option) and specific scrolling speed (see the theme in the demo). Example:


creating your own custom theme

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


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

.mTS-my-theme{ padding: 10px; }
.mTS-my-theme .mTSThumbContainer{ margin: 0 5px; } 
/* and so on... */

User-defined callbacks

You can trigger your own js function(s) by using plugin’s callbacks option parameter (see all availbale callbacks in configuration section). Some examples:

        onScroll: function(){ /* do something */ }
        onTotalScroll: function(){ myFunction(); }

function myFunction(){
   /* do something */

The plugin returns a number of values and objects that can be used inside the callbacks

  • this – the scroller element
  • this.mts.content – the scrollable element containing the content (e.g. the ul element) as jquery object
  • – content’s top position (pixels)
  • this.mts.left – content’s left position (pixels)
  • this.mts.topPct – content vertical scrolling percentage
  • this.mts.leftPct – content horizontal scrolling percentage
  • this.mts.direction – content’s scrolling direction (returns "x" or "y")

view code examples

Get the scrolling percentage of a horizontal scroller while scrolling is active

        whileScrolling: function(){
          var result=this.mts.leftPct;

Append new content when scrolling reaches scroller’s right edge

        onTotalScroll: function(){

function appendData(el){
   el.append("<li>new data</li>");

Plugin dependencies & requirements

  • jQuery version 1.6.0 or higher


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

Pages: 1 2 3


Post a comment

Comments pages: 1 2 3 4 5 6 14

  1. Rali Madhu
    Posted on September 30, 2011 at 07:56 Permalink

    very nice dude, very simple code for easily understand.

  2. Wojciech Jablonski
    Posted on September 29, 2011 at 10:39 Permalink

    The best version I’ve found here:

    But without some modification it’s still crap in IE. findpos method is not working good on IE. Better (cross-browser) functions are in jquery. Then horizontal placement is something like that: placement_x = $(“#outer_container”).position().left + $(“#outer_container”).offset().left;

    Vertical position can be checked in the same way. Findpos is totaly crap.
    Afeter my modification (but only relative – not absolut position of container) it is working fine in IE6-IE9, FF, Chrome.

    Maybe it will be usefull for somebody. I’ve waste too many hours for that.
    I’m sorry malihu, but I have to say that – last one version is totaly crap for IE. Additional easing isn’t good for my CPU ๐Ÿ˜€ Oldest version is much better for me.

  3. Wojciech Jablonski
    Posted on September 28, 2011 at 19:23 Permalink

    And also demo page is not working correctly in IE7 (vertical flying) Demo 1. What is wrong in this this plugin???

  4. Wojciech Jablonski
    Posted on September 28, 2011 at 19:14 Permalink

    It’s not working in IE7 – everything is flying (!), in IE8 and IE9 number of elements is always (-1), last one element is empty space….. Maybe somebody help ?

  5. Wojciech Jablonski
    Posted on September 28, 2011 at 12:05 Permalink

    I’ve copied (Ctrl+C, Ctrl+V) demo1 to my webpage (into my structure). To work, I had to remove jquery noconflict. Now I’ve got another one problem. Content of .jTscroller is flying vertical! Why? When I debug JS, I can see that “top” property of .jTscroller is changing between -5px and 0, why??? It should be 0 all the time. I can’t understand that. Exactly the sam problem without easing. I think – when it is set to to “horizontal” top value shouldn’t be changed.

    • Wojciech Jablonski
      Posted on September 28, 2011 at 12:19 Permalink

      Ok, now I’ve found last problem reason, .jTscroller was defined percentage (.jTscroller) after changing this to pixels – vertical flying problem is gone.

      • Wojciech Jablonski
        Posted on September 28, 2011 at 12:25 Permalink

        Additional, height must be the same what .jThumbnailScroller. In other case it’s flying vertical.. I thinh that TOP property shouldn’t be changed in horizontal option.

  6. Wojciech Jablonski
    Posted on September 28, 2011 at 10:55 Permalink

    Another problem, when I call jQuery.noConflict();, datepicker (ui library) crashes, I’m using both and few more jquery plugins on my website.

  7. Wojciech Jablonski
    Posted on September 28, 2011 at 01:17 Permalink

    It seems that the oldest one version (like for Shaun) worked fine (I mean movements), but I don’t like leatest version (all demos). Is it possible to set a new one version to movement’s like for Shaun? It was very good version. In next step I need to change size for moving cursor (like in Mark Sebastian to 2/3 container width), I think it could be possible and better than making first and last margins.

    • Wojciech Jablonski
      Posted on September 28, 2011 at 17:20 Permalink

      Not very clear but it works for me now, after line 65:
      if (mouseCoords 830 ) { mouseCoords = 900; }

      where 900 is container width, and 70 (830 = 900 -70) is mouse reaction margin ๐Ÿ™‚

      I think these params should be params and recalculated from additionals variables.

  8. Michiel
    Posted on September 26, 2011 at 16:21 Permalink

    Unfortiantly the scroller isn’t working anymore, but I don’t understand why it isn’t… Could someone please help me out? I’m looking at my code for ages… Many thanks!

  9. Andrea
    Posted on September 26, 2011 at 15:28 Permalink

    A lot of thanks for the script!
    I’ve got a question for you..
    Is there a way to scroll a defined amount of pixel in the “clickButtons” mode?
    I need to scroll one thumb per click.
    Thanks to everyone for any help

    • Wojciech Jablonski
      Posted on September 27, 2011 at 17:25 Permalink

      I was wonder how to change mouse reaction area. This what I need exactly, is setting plugin to work like Mark Sebastian ThumbnailsNavigationGallery. I was trying myself but without results. Please, help me ..

  10. Daan
    Posted on September 22, 2011 at 14:59 Permalink

    I realy like this slider! But I have a question, is it possible to place the navigation buttons outside the scroller?

    • malihu
      Posted on September 22, 2011 at 16:08 Permalink

      Not without some modifications to the script. The reason is it would “break” other instances of the scroller and you would then need to specify a unique id for each of the buttons for each scroller.

      • Greg
        Posted on June 26, 2012 at 00:02 Permalink

        Are you able to provide some basic script to do this?

  11. leena
    Posted on September 21, 2011 at 09:12 Permalink

    Nice jquery scroll. thanks for sharing this.

  12. Giacomo
    Posted on September 19, 2011 at 17:48 Permalink

    Hi malihu!
    Again…great work! But is there a little bug maybe?
    If I add more href tags (like 28 or more) the scrolling is no more fluid in IE 8 like chrome…is there a solution??

  13. Fabio
    Posted on September 15, 2011 at 15:57 Permalink

    Hi Malihu,
    your script work GREAT !!! Thanks !!!
    i’m a novice and i’ve a little problem:
    in my Beta web i’ve this script (global.js) in the master page that manage the menu:

    $(document).ready(function () {
    var b = $(“div#navbar > ul > li”);
    $(“div#navbar”).find(“div.drop”).first().css(“left”, “4px”);
    var a = null, c = -1, d = function () {
    a && a.hide()
    b.mouseover(function () {
    var e = $(this).children(“div.drop”);
    c = window.setTimeout(function () {
    a && a.hide();
    a = e;
    }, 300)
    b.mouseout(function () {
    $(“div#bn”).mouseover(function () {
    window.setTimeout(d, 300)
    $(“div#bc”).mouseover(function () {
    window.setTimeout(d, 300)

    when is load the thumbnailScroller recive a jscript error in the 2 row …
    Do you have any suggest?

    Thanks. Fabio

  14. Matt
    Posted on September 15, 2011 at 04:15 Permalink

    Hey! Very nice script, i love it!
    But, i have a problem with my ajax loader.

    If i load the script on the landing page – everything okay!
    But, when i load a AJAX Content DIV with the script it doesn’t work! ๐Ÿ™
    I wanna use the vertical-slider with 100% height! ๐Ÿ™

    What’s the reason? ๐Ÿ™ I doesn’t find the answer…

    • malihu
      Posted on September 19, 2011 at 12:17 Permalink

      Hi Matt,

      You’d need to add thumbnailScroller function as a callback in your ajax call, so it fires when your data is loaded. For example:
      $.ajax({ url: "test.html", success: function(){ $("#selector_id").thumbnailScroller({ ... }); } });

      • pjack
        Posted on February 7, 2013 at 23:11 Permalink

        I can’t for the life of me get this to work after an Ajax call. I’m calling it again to as you have there and it’s not working.

  15. Breece
    Posted on September 14, 2011 at 00:51 Permalink

    I’m using this scroller for a website (I used the one shown in “example 2” at the top of the page, with cursor movement), except I’ve replaced the thumbnails with divs containing images and text.
    After this modification, the content also scrolls vertically, not just horizontally like I would like it to.
    I’m not using any other jquery so I don’t think it’s due to a conflict.
    The only modifications I’ve done was in the “jquery.thumbnailScroller.css” file, and it was only minor stuff like taking away the borders, radiuses, background colors, that kind of layout options.
    Any ideas how to cancel the vertical scroll due to cursor movement?
    I’ll keep looking, but any help would be appreciated, since I’m only a designer and not much of a coder.
    Thanks in advance!

    • Breece
      Posted on September 14, 2011 at 01:13 Permalink

      Hey again Malihu,
      Nevermind my problem, I’ve fixed it…I just had to change .jTscroller’s height from 100% to the pixel height I’m using, and now it works great!
      Thanks again for this awesome pluggin, keep up the great work, cheerz!

    • po5i
      Posted on January 19, 2012 at 18:15 Permalink

      hi Breece, do you have any idea of how can I click the thumb and instead of an image, I want to open an html (can be an external or a div in my document)

      Really appreciate your help

  16. Darryl Young
    Posted on September 9, 2011 at 23:42 Permalink

    Hi there. Firstly, great work with this!

    I developed a website using this scroller to display thumbnails for videos. Currently, there are 16 videos in the scroller and everything works great except for in Firefox. In every other browser I can see all 16 thumbnails and they final one ‘finishes’ at right at the end, as it should. In Firefox, however, I can’t see the 16th thumbnail – it just doesn’t show. There’s a black space though where the thumbnail should be. The weird think is that if I copy the code for the 16th thumb and add it in again (making 17), it works completely fine and I see both of the latest ones.

    The 16th video which isn’t appearing is called “Failsafe – Routines”. In Firefox, the last one shown is technically the 15th, “Failsafe – Hope”.

    The site can be found at and the scroller is visible immediately on the home page.

    Thank you so much, I really hope this can be solved.

    • Darryl Young
      Posted on September 10, 2011 at 13:12 Permalink

      I’ve managed to fix this issue after a bit of playing around. With my set up (design of the slider), I just simply can’t have 16 thumbnails – the 16th gets wrapped below in Firefox. I’ve added this code to the j.thumbnailScroller.css file to target Firefox. It’s not ideal having to specify a width of the slider but it works.

      /* Firefox width fix */
      @-moz-document url-prefix() {
      .jThumbnailScroller .jTscroller{position:relative; height:100%; margin:0; left:0; top:0; display:inline-block; *display:inline; width: 5160px;}


  17. Giacomo
    Posted on September 9, 2011 at 18:02 Permalink

    Great work, thank you!
    Just a question: scrolling is only on one row now, is it possible to have more thano one row scrolling at the same time (same gallery)?

    Like this flash site.

    Thank you very much!!

  18. JimC
    Posted on September 7, 2011 at 23:46 Permalink

    I would like to make this Slider interact with another control on the screen. For instance if a user clicked a link (elsewhere on page) that the corresponding picture in the slider gets broght into frame and highlighted (like a mouseover).
    I’m guessing there may be a function I can call to make that happen, but dont know enough to figure that out myself… any thoughts?

  19. imprenta digital
    Posted on September 7, 2011 at 13:06 Permalink

    Really nice thumbnail scroller, we are using it on a new project. Regards

  20. Farukh
    Posted on August 31, 2011 at 00:48 Permalink

    The script is working well on IE, but still bugs on Firefox!

  21. Farukh
    Posted on August 31, 2011 at 00:42 Permalink

    Nice script, but same problem here, the scroll goes up & down. Works fine on a blank page /!\ , would you plz debug me?
    Thanx in advance!

  22. Ryan
    Posted on August 29, 2011 at 18:34 Permalink

    Awesome. Worked nearly perfect on my first go thanks for this script man. Two questions I cannot figure out, in FireFox, the last image is dropping down to a new line, so it scrolls left and right a bit, but also up and down to get to the last image.. also in Chrome there is some up and down movement as well. Would really appreciate if you could take a look, thanks.

  23. Phillip Pace
    Posted on August 26, 2011 at 03:49 Permalink

    If anyone was having slight jerking (up & down) when scrolling make sure you specific width & height attributes on your images. This fixed it for me.

  24. andy
    Posted on August 25, 2011 at 19:39 Permalink

    Excellent work! Congratulations.
    I have one question: is it possible to place two scrollers of the same kind the same page? I tried it without luck. Please help.

  25. Joe
    Posted on August 17, 2011 at 18:37 Permalink

    Hi, I’m trying to recreate the scolling thumbnail gallery at and I was wondering if this plug in would facilitate something like that. Any feedback would be greatly appreciated!

    • malihu
      Posted on August 18, 2011 at 14:59 Permalink

      Yes you could use it (with some modifications) just for the scrolling of the thumbnails panel.

  26. Crady
    Posted on August 12, 2011 at 07:43 Permalink

    Brilliant script! I’ve got everything working beautifully now but I do have one nagging concern; the script appears to be incompatible with touch-based OS devices like the iPad, but I believe this could be overcome by adding mouse wheel support. I know that jQuery has an API for the mouse wheel but unfortunately I don’t have the skills to weave that into your code.

    Is there a chance you’ll be adding mouse wheel support anytime soon?

    Thanks and cheers!

  27. Jed
    Posted on August 11, 2011 at 18:21 Permalink

    These are some great scripts and integrate well with Scriptaculous, etc. Thanks!

  28. HennySmafter
    Posted on August 11, 2011 at 17:02 Permalink

    Thank you for the great plugin it is almost exactly what I was looking for. Also thank you for the great support you are giving to everyone with questions.

    Me too have a question:

    Is it possible to make the thumbnails directly next to each other. A sample of what I mean can be found here

    PS: Is it possible to make this into a module for Joomla 1.5/1.6/1.7

    Thanks once again and looking forward to the solution

  29. Doug Wolfgram
    Posted on August 10, 2011 at 14:02 Permalink

    I am having a similar problem to a previous commenter. My thumbs are wrapping when I use horizontal mode. I increased the height of the container to see it more clearly. When I cut and paste my code into the multi-sample, for example, it works fine. So it has something to do with the CSS I believe. I am also using my own jquery-ui but that doesn’t seem to be the problem. I cannot post a link because my app is a protected system app.

    Can you think of anything that would cause the thumbs to wrap rather than making a wider internal div? Some combination in the hierarchy of position statements perhaps?

    • malihu
      Posted on August 10, 2011 at 16:02 Permalink

      Check for any unwanted tags in your html (e.g. br – see above comment) and make sure all anchors inside jTscroller are displayed as inline-block.

  30. Raul
    Posted on August 9, 2011 at 13:39 Permalink

    Hi there!

    Been looking for something like that for a time now, thanks!

    Something weird is going on, however: I’m loading the horizontal scroller, but somehow thumbs are aligned vertically!
    Have a look:
    May it be that the scroller is having a conflict with Lightbox?

    Many thanks! If I can make it work I will surely buy you a coffee! :p

    • malihu
      Posted on August 10, 2011 at 15:56 Permalink

      Hello Raul,

      Seems there’s an unwanted br below every anchor in the scroller, resulting each anchor (containing image) to appear below the previous one (goes on a new line). If you remove those line breaks it should be ok.

      • Raul
        Posted on August 11, 2011 at 18:10 Permalink

        Gosh, what a dumb question! I was editing it in WordPress so I didn’t see the br tags, but each thumb was on a separate line.

        Many thanks for your help!! I owe you a coffee!


Comments pages: 1 2 3 4 5 6 14

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>