carouFredSelで画面横幅いっぱいのスライダーや、レスポンシブスライダーを実装する

様々なスライダーが実現できる carouFredSel を使ってみました。
その中でも特に実用的な
・画面横幅いっぱいのスライダー
・横幅固定のスライダー
・レスポンシブスライダー
のデモを作っています。

slider

デモページ

まずはプラグインのデータをダウンロードして読み込みます。

carouFredSel(github)

<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="jquery.carouFredSel-6.2.1-packed.js"></script>

今回のデモでは、htmlの構造は同じです。(id名は変えてありますが)

共通html

<div id="slider">
<div id="wrapper">
  <ul id="carousel">
    <li><a href="#"><img src="../images/main-bnr/01.jpg" width="600" height="300" /></a></li>
    <li><a href="#"><img src="../images/main-bnr/02.jpg" width="600" height="300" /></a></li>
    <li><a href="#"><img src="../images/main-bnr/03.jpg" width="600" height="300" /></a></li>
    <li><a href="#"><img src="../images/main-bnr/04.jpg" width="600" height="300" /></a></li>
  </ul>
  <a href="#" id="prev"></a>
  <a href="#" id="next"></a>
  <!-- / #wrapper --></div>
  <div id="pager"></div>
<!-- / #slider --></div>

画面横いっぱいスライダー

CSS

#slider {
  position:relative;
  overflow: hidden;
}
#wrapper {
  background: #fff;
  width: 100%;
  height: 300px;
  overflow: hidden;
}
#carousel li {
  float: left;
}
#prev, #next {
  background-color: #fff;
  opacity:0.7;
  filter: alpha(opacity=70);/* ie 6 7 */
  -ms-filter: "alpha(opacity=70)";/* ie 8 */
  zoom:1;
  display: block;
  height: 300px;
  width: 50%;
  top: 0;
  position: absolute;
}
#prev:hover, #next:hover {
  opacity:0.4;
  filter: alpha(opacity=40);/* ie 6 7 */
  -ms-filter: "alpha(opacity=40)";/* ie 8 */
  zoom:1;
}
#prev {
  left: -300px;/* スライドする画像の横半分の値 */
  background:#fff url( ../images/arrow-left.png ) 95% center no-repeat;
}
#next {
  background:#fff url( ../images/arrow-right.png ) 5% center no-repeat;
  right: -300px;/* スライドする画像の横半分の値 */
}
#prev img {
  right:20px;
  top:120px;
  position:absolute;
}
#next img {
  left:20px;
  top:120px;
  position:absolute;
}
#pager {
  text-align:center;
  padding:10px;
}
#pager a {
  border: 2px solid #ccc;
  border-radius:5px;
  -webkit-border-radius:5px;
  -moz-border-radius:5px;
  display: inline-block;
  width: 5px;
  height: 5px;
  margin: 0 5px 0 0;
}
#pager a:hover {
  background:#eee ;
}
#pager a span {
  display: none;
}
#pager a.selected {
  background-color: #ccc;
}

jQuery

$(function() {
  $('#carousel').carouFredSel({
    width: '100%',
    items: {
      visible: 3,
      start: -1
    },
    scroll: {
      items: 1,
      duration: 1000,
      timeoutDuration: 3000
    },
    prev: '#prev',
    next: '#next',
    pagination: {
      container: '#pager',
      deviation: 1
    }
  });
});

横幅固定スライダー

CSS

#slider {
  position:relative;
  width:800px;
  margin:0 auto;
  overflow: hidden;
}
#carousel li {
  float: left;
}
#wrapper {
  background: #fff;
  width: 100%;
  height: 300px;
  overflow: hidden;
}
#prev, #next {
  background-color: #fff;
  opacity:0.7;
  filter: alpha(opacity=70);/* ie 6 7 */
  -ms-filter: "alpha(opacity=70)";/* ie 8 */
  zoom:1;
  display: block;
  height: 300px;
  width: 50%;
  top: 0;
  position: absolute;
}
#prev:hover, #next:hover {
  opacity:0.4;
  filter: alpha(opacity=40);/* ie 6 7 */
  -ms-filter: "alpha(opacity=40)";/* ie 8 */
  zoom:1;
}
#prev {
  left: -300px;/* スライドする画像の横半分の値 */
  background:#fff url( ../images/arrow-left.png ) 95% center no-repeat;
}
#next {
  right: -300px;/* スライドする画像の横半分の値 */
  background:#fff url( ../images/arrow-right.png ) 5% center no-repeat;
}
#prev img ,
#prev img {
  right:20px;
  top:120px;
  position:absolute;
}
#next img {
  left:20px;
  top:120px;
  position:absolute;
}
#pager {
  text-align:center;
  padding:10px;
}
#pager a {
  border: 2px solid #ccc;
  border-radius:5px;
  -webkit-border-radius:5px;
  -moz-border-radius:5px;
  display: inline-block;
  width: 5px;
  height: 5px;
  margin: 0 5px 0 0;
}
#pager a:hover {
  background:#eee ;
}
#pager a span {
  display: none;
}
#pager a.selected {
  background-color: #ccc;
}

jQuery

$(function() {
  $('#carousel').carouFredSel({
    width: '100%',
    items: {
      visible: 3,
      start: -1
    },
    scroll: {
      items: 1,
      duration: 1000,
      timeoutDuration: 2000
    },
    prev: '#prev',
    next: '#next',
    pagination: {
      container: '#pager',
      deviation: 1
    }
  });
});

レスポンシブ(数固定・画像サイズ可変)

CSS

#slider {
  position: relative;
  margin:20px 0;
  width: 100%;
}
#wrapper {
  width: 100%;
  left: 5%;
  overflow: hidden;
  border-top: 1px #ddd solid;
  border-bottom: 1px #ddd solid;
}
#carousel li {
  margin: 10px 5px;
  border: none;
  display: block;
  float: left;
}
#carousel li img {
  width: 100%;
  height: auto;
}
#prev, #next {
  position: absolute;
  top: 0;
  background: center center no-repeat #ddd;
  width: 5%;
}
#prev:hover, #next:hover {
  background-color: #ccc;
}
#prev {
  background-image: url( ../images/arrow-left.png );
  left: 0;
}
#next {
  background-image: url( ../images/arrow-right.png );
  right: 0;
}
#pager {
  text-align:center;
  padding:10px;
}
#pager a {
  border: 2px solid #ccc;
  border-radius:5px;
  -webkit-border-radius:5px;
  -moz-border-radius:5px;
  display: inline-block;
  width: 5px;
  height: 5px;
  margin: 0 5px 0 0;
}
#pager a:hover {
  background:#eee ;
}
#pager a span {
  display: none;
}
#pager a.selected {
  background-color: #ccc;
}

jQuery

$(function() {
  $('#carousel').carouFredSel({
    responsive: true,
    items: {
      width: 300,
      height: '50%',
      visible: 3
    },
    auto: {
      items: 1
    },
    pagination: {
      container: '#pager',
      deviation: 1
    },
    prev: '#prev',
    next: '#next'
  });
 
  var $elems = $('#wrapper, #prev, #next'),
    $image = $('#responsive-carousel li:first')
 
  $(window).bind( 'resize.example', function() {
    var height = $image.outerHeight( true );
 
    $elems
      .height( height )
  }).trigger( 'resize.example' );
  
});

デモページ