简体   繁体   中英

jQuery carousel making responsive

I have this carousel which is not responsive and need to make it responsive but not sure what to do with it as its a current carousel ive found online that ive been using.

Can someone maybe help me get it responsive? they are just going to be images - many thanks in advance

http://codepen.io/anon/pen/RNPYqq

HTML:

<div id="slider">
  <a href="#" class="control_next">></a>
  <a href="#" class="control_prev"><</a>
  <ul>
    <li><img src="http://placehold.it/1130x775"></li>
    <li><img src="http://placehold.it/1130x775"></li>
    <li><img src="http://placehold.it/1130x775"></li>
    <li><img src="http://placehold.it/1130x775"></li>
  </ul>  
</div>

JS:

jQuery(document).ready(function ($) {

    setInterval(function () {
        moveRight();
    }, 3000);

    var slideCount = $('#slider ul li').length;
    var slideWidth = $('#slider ul li').width();
    var slideHeight = $('#slider ul li').height();
    var sliderUlWidth = slideCount * slideWidth;

    $('#slider').css({ width: slideWidth, height: slideHeight });

    $('#slider ul').css({ width: sliderUlWidth, marginLeft: - slideWidth });

    $('#slider ul li:last-child').prependTo('#slider ul');

    function moveLeft() {
        $('#slider ul').animate({
            left: + slideWidth
        }, 200, function () {
            $('#slider ul li:last-child').prependTo('#slider ul');
            $('#slider ul').css('left', '');
        });
    };

    function moveRight() {
        $('#slider ul').animate({
            left: - slideWidth
        }, 200, function () {
            $('#slider ul li:first-child').appendTo('#slider ul');
            $('#slider ul').css('left', '');
        });
    };

    $('a.control_prev').click(function () {
        moveLeft();
    });

    $('a.control_next').click(function () {
        moveRight();
    });

});    

CSS:

@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,600);  

html {
  border-top: 5px solid #fff;
  background: #58DDAF;
  color: #2a2a2a;
}

html, body {
  margin: 0;
  padding: 0;
  font-family: 'Open Sans';
}

h1 {
  color: #fff;
  text-align: center;
  font-weight: 300;
}

#slider {
  position: relative;
  overflow: hidden;
  margin: 20px auto 0 auto;
  border-radius: 4px;
}

#slider ul {
  position: relative;
  margin: 0;
  padding: 0;
  height: 200px;
  list-style: none;
}

#slider ul li {
  position: relative;
  display: block;
  float: left;
  margin: 0;
  padding: 0;
  width: 1130px;
  height: 775px;
  background: #ccc;
  text-align: center;
  line-height: 300px;
}

a.control_prev, a.control_next {
  position: absolute;
  top: 40%;
  z-index: 999;
  display: block;
  padding: 4% 3%;
  width: auto;
  height: auto;
  background: #2a2a2a;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  font-size: 18px;
  opacity: 0.8;
  cursor: pointer;
}

a.control_prev:hover, a.control_next:hover {
  opacity: 1;
  -webkit-transition: all 0.2s ease;
}

a.control_prev {
  border-radius: 0 2px 2px 0;
}

a.control_next {
  right: 0;
  border-radius: 2px 0 0 2px;
}

.slider_option {
  position: relative;
  margin: 10px auto;
  width: 160px;
  font-size: 18px;
}

UPDATE: I have made the CSS 100% in width and height with aut but the JS now needs work i think and dont know what to do here as it sets the ontainer height and width margin stuff to move etc... can someone help me with this please?

You can calculate the li's width using the document's width and the width of the ul will be taken care of.

JS

    //get width of document here and set to li
    $('#slider ul li').css({"width":($(document).width()-200)});

    var slideCount = $('#slider ul li').length;
    var slideWidth = $('#slider ul li').width();
    var slideHeight = $('#slider ul li').height();
    var sliderUlWidth = slideCount * slideWidth;

    $('#slider').css({ width: slideWidth, height: slideHeight });


    $('#slider ul').css({ width: sliderUlWidth, marginLeft: - slideWidth });

CSS

#slider ul li { 

    /* other CSS */

    height: 100%;

  }

And for the image to be responsive with respect to the parent

#slider ul li img { 
 max-width: 100%;
 max-height: 100%;
}

Demo

On Window resize Updated Fiddle

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM