The CSS3 background-size property is the perfect solution to create fully responsive jQuery slideshows that look great even on mobile devices. Basically, this property scales a background image until it fits its container. Let's see a practical example.

The markup used here is very common:

<div id="slideshow">
    <div id="slideshow-wrapper">
        <div class="slide" id="s1"></div>
        <div class="slide" id="s2"></div>
        <div class="slide" id="s3"></div>
        <div class="slide" id="s4"></div>
    <div id="slideshow-nav">
        <a href="#s1" class="active">1</a>
        <a href="#s2">2</a>
        <a href="#s3">3</a>
        <a href="#s4">4</a>

The CSS uses background images with the background-size property set to contain:

#slideshow {
    margin: 2em auto;
    width: 70%;
    max-width: 40em;
    overflow: hidden;

#slideshow-wrapper {
    width: 1600em;
    height: 15em;
    position: relative;

div.slide {
    width: 40em;
    height: 15em;
    float: left;
    background-repeat: no-repeat;
    background-size: contain;

#s1 {
    background-image: url(slide-1.jpeg);

#s2 {
    background-image: url(slide-2.jpeg);

#s3 {
    background-image: url(slide-3.jpeg);

#s4 {
    background-image: url(slide-4.jpeg);

#slideshow-nav {
    margin: 1em 0;
    text-align: center;

#slideshow-nav a {
    display: inline-block;
    width: 1.5em;
    height: 1.5em;
    line-height: 1.5;
    border: 1px solid silver;
    color: #333;
    text-decoration: none;
    margin-right: 0.5em;

#slideshow-nav {
    background: #000;
    color: #fff;
    border-color: #000;

Finally, the jQuery code used here is purely demonstrative:

var Slideshow = {
    navigate: function() {
        $('a', '#slideshow-nav').click(function(e) {
            var $a = $(this);
            var slide = $($a.attr('href'));
            var wrapper = $('#slideshow-wrapper');

                left: -slide.position().left
            }, 1000, 'linear', function() {


    init: function() {



You can see the demo below.


Live demo