A JavaScript Based Slider: TouchSlider

The TouchSlider plug-in for sliding content

The TouchSlider is a JS based plug-in that enables smooth sliding of the content.

  • The TouchSlider is a responsive slider that also supports mobile/tablet.
  • This simple-to-use slider supports mouse drag and wheel, touch screen, etc.
  • You can create a slider with different-sized content and full-screen mode support as well.
  • See the following demos along with setting up steps for using this slider in your web project.

A demo of sliding different sized content boxes

In this demo, a simple slider is created by using the <li> tags. Along with the slider, four buttons are given to stop, pause, and move slides next and previous.

This is how the slider looks along with the code:

JavaScript Image Slider Animation

Full code:

<!DOCTYPE html>
<html>
<head>
<link href='css/style-slider.css' rel='stylesheet'/>

<script src="js/touchslider.js"></script>

</head>

<body>

<h3>A slider with different options</h3>

<div class='swipe' style='margin:10px;'>
  <ul id='slider'>
    <li style='display:block'><div>1</div></li>
    <li><div>2</div></li>
    <li><div>3</div></li>
    <li><div>4</div></li>
    <li><div>5</div></li>
  </ul>
</div>

<button onclick="t1.pause();">Pause</button>
<button onclick="t1.play();">Play</button>
<button onclick="t1.prev();">Prev</button>
<button onclick="t1.next();">Next</button>


<br/>
<div id="pagenavi">
</div>


<script type="text/javascript">
console=window.console || {dir:new Function(),log:new Function()};
var active=0,
    as=document.getElementById('pagenavi').getElementsByTagName('a');
for(var i=0;i<as.length;i++){
    (function(){
        var j=i;
        as[i].onclick=function(){
            t4.slide(j);
            return false;
        }
    })();
}
var t1=new TouchSlider('slider',{duration:800, interval:3000, direction:0, autoplay:true, align:'center', mousewheel:false, mouse:true, fullsize:false});
t4.on('before',function(m,n){
    as[m].className='';
    as[n].className='active';
})
</script>
</body>
</html>

You can amend the CSS to change the properties of the content boxes.

The slider auto-moves by default while you may also use the buttons to stop the sliding.

Similarly, press the play button to slide again.

You can also use the Next/Previous buttons to move the slide.

If you want to add more sliding elements, just add another div with <li>, e.g:

<ul id='slider'>

<li style='display:block'><div>1</div></li>

<li><div>2</div></li>

<li><div>3</div></li>

<li><div>4</div></li>

<li><div>5</div></li>

<li><div>6</div></li>

</ul>

A demo of full-width slider with add/remove options

In this demo, a full-width slider is created with options to add and remove slide elements on the go.

Along with the next/prev buttons, you can also see the “Add” and “Remove” buttons.

Clicking the add button will add a new slide item at the end of the slider. While the Remove button will delete from the beginning.

Apart from that, the following properties are set in the <script> section for sliding:

  • Duration: 500;  (0.5 seconds)
  • Interval: 1000;
  • Mousewheel: false (will not move with the mouse wheel).
  • Mouse: true (drags with the mouse)

JS slider animation with add remove option - Animation

See and change this line in the <script> section for modifying the slider properties (as given in the full code above):

var t11=new TouchSlider('slider1',{duration:500, interval:1000, direction:0, autoplay:true, align:'left', mousewheel:false, mouse:true, fullsize:false});

A full-size slider demo

Using about the same properties and options as in the above example, except, the fullsize:true. That means the sliding elements will span the full available width (each item).

For the demo, a few other properties are changed a bit like duration, interval, etc.

Full size JavaScript slider Demo

Use this line in the code (after copying the first example’s code):

var t11=new TouchSlider('slider1',{duration:1000, interval:1200, direction:0, autoplay:true, align:'left', mousewheel:false, mouse:true, fullsize:true});

You can see, the fullsize is set as true.

A demo of image navigation by using TouchSlider

In this example, four images are used in the slider. One image will be visible at a time.

Just like the above example, the navigation links are also given. You may also set the speed and interval of sliding.

JavaScript image slider

The code:
<!DOCTYPE html>
<html>
<head>
<link href='css/style-slider.css' rel='stylesheet'/>

<script src="js/touchslider.js"></script>

</head>

<body>

<h3>A demo of image slider</h3>



<div class='swipe'>
  <ul id='slider4'>
    <li style='display:block'><img src="images/banana.jpg" alt="" /></a></li>
    <li><img src="images/currant.jpg" alt="" /></li>
    <li><img src="images/strawberries.jpg" alt="" /></li>
    <li><img src="images/mango.jpg" alt="" /></li>
  </ul>
</div>
<div>
    <a href="#" onclick="t4.slide(0);return false;"> 1 </a>
    <a href="#" onclick="t4.slide(1);return false;"> 2 </a>
    <a href="#" onclick="t4.slide(2);return false;"> 3 </a>
    <a href="#" onclick="t4.slide(3);return false;"> 4 </a>
</div>
<br/>
<div id="pagenavi">Slide Navigation:
    <a href="#" class="active">1</a>
    <a href="#">2</a>
    <a href="#">3</a>
    <a href="#">4</a>
</div>
<br>
<button onclick="t4.pause();">Pause</button>
<button onclick="t4.play();">Play</button>
<button onclick="t4.prev();">Prev</button>
<button onclick="t4.next();">Next</button>


<script type="text/javascript">
console=window.console || {dir:new Function(),log:new Function()};
var active=0,
    as=document.getElementById('pagenavi').getElementsByTagName('a');
for(var i=0;i<as.length;i++){
    (function(){
        var j=i;
        as[i].onclick=function(){
            t4.slide(j);
            return false;
        }
    })();
}

var t4=new TouchSlider('slider4',{speed:1000, direction:0, interval:2000, fullsize:true});
t4.on('before',function(m,n){
    as[m].className='';
    as[n].className='active';
})
</script>
</body>
</html>

In this example, the fullsize value is kept true. As you can see, only a single image is visible at a time.

If you make this value false, it will display multiple images at a time. See the example below.

A demo of showing multiple images

If the screen is larger, then setting the fullsize:false may show multiple images at a time. See the following demo online:

JavaScript image slider multiple

Code:
<!DOCTYPE html>
<html>
<head>
<link href='css/style-slider.css' rel='stylesheet'/>

<script src="js/touchslider.js"></script>

</head>

<body>

<h3>A demo of image slider</h3>



<div class='swipe'>
  <ul id='slider4'>
    <li style='display:block'><img src="images/banana.jpg" alt="" /></a></li>
    <li><img src="images/currant.jpg" alt="" /></li>
    <li><img src="images/strawberries.jpg" alt="" /></li>
    <li><img src="images/mango.jpg" alt="" /></li>
  </ul>
</div>
<div>
    <a href="#" onclick="t4.slide(0);return false;"> 1 </a>
    <a href="#" onclick="t4.slide(1);return false;"> 2 </a>
    <a href="#" onclick="t4.slide(2);return false;"> 3 </a>
    <a href="#" onclick="t4.slide(3);return false;"> 4 </a>
</div>
<br/>
<div id="pagenavi">Slide Navigation:
    <a href="#" class="active">1</a>
    <a href="#">2</a>
    <a href="#">3</a>
    <a href="#">4</a>
</div>
<br>
<button onclick="t4.pause();">Pause</button>
<button onclick="t4.play();">Play</button>
<button onclick="t4.prev();">Prev</button>
<button onclick="t4.next();">Next</button>


<script type="text/javascript">
console=window.console || {dir:new Function(),log:new Function()};
var active=0,
    as=document.getElementById('pagenavi').getElementsByTagName('a');
for(var i=0;i<as.length;i++){
    (function(){
        var j=i;
        as[i].onclick=function(){
            t4.slide(j);
            return false;
        }
    })();
}

var t4=new TouchSlider('slider4',{speed:1000, direction:0, interval:2000, fullsize:false});
t4.on('before',function(m,n){
    as[m].className='';
    as[n].className='active';
})
</script>
</body>
</html>

I have also written a guide for multiple-image sliding by using the Bootstrap carousel here.

Setting up TouchSlider

This is quite simple. Download the package from GitHub website. Just copy/paste the touchslider.js and style.css from src folder to your desired location.

Refer these files in the <body> section for optimization. For example:

<link href=’css/style-slider.css’ rel=’stylesheet’/>

<script src=”js/touchslider.js”></script>

That’s it!

Author - Atiq Zia

Atiq is the writer at jquery-az.com, an online tutorial website started in 2014. With a passion for coding and solutions, I navigate through various languages and frameworks. Follow along as we solve the mysteries of coding together!