lider : ラベル付き横スライダー - jQuery simple plugins
目次
- jQuery simple plugins
- lider : ラベル付き横スライダー
- ipop : ドラッグ可能なポップアップウインドウ
lider
ラベル付き横スライダーを実現するjQueryプラグインです。このような動作をするプラグインではEvo Sliderが有名ですが、シンプルで改造しやすいものが欲しかったので自作しました。
全て合わせて50行以下のシンプルなプラグインです。
以下にサンプルを示します。ラベル部分をクリックすると横にスライドします。
ダウンロード
lider.zipプラグインを使うのに必要なファイルはlider.jsのみです。
sample/sample1.htmlが最もシンプルなサンプルです。
使い方
1. まず各ページとそれらを囲むタグを書きまず。
<div id="container">
  <div>ページ1の内容</div>
  <div>ページ2の内容</div>
  <div>ページ3の内容</div>
</div>
2. head内でプラグインを読み込みます。
<script src="lider.js"></script>
3. 各ページを囲んだ要素に対してプラグインを割り当てます。
$('#container').lider();
オプション
| オプション名 | 説明 | デフォルト値 | 
|---|---|---|
| labelWidth | ラベルの幅(px) | 40 | 
| firstPage | 最初に表示するページ | 1 | 
| duration | アニメーションの速度(ms) | 400 | 
| easing | イージングの種類 | 'swing' | 
ソース
lider.js
(function($) {
  $.fn.lider = function(options) {
    return this.each(function() {
      var setting = $.extend({
        labelWidth: 40,
        firstPage: 1,
        duration: 400,
        easing: 'swing'
      }, options);
      var showPage = setting['firstPage'] - 1;
      var container = $(this);
      var pages = container.children();
      var pageNum = pages.length;
      var labelWidth = setting['labelWidth'];
      var anim = function(p, l) {
        pages.eq(p).animate({left: l}, setting['duration'], setting['easing']);
      }
      container.css({
        position: 'relative',
        overflow: 'hidden'
      });
      pages.each(function(page, elem) {
        var left = page * labelWidth;
        if (page > showPage) left += container.width() - pageNum * labelWidth;
        $(elem).css({
          position: 'absolute',
          top: 0,
          left: left,
          width: container.width() - labelWidth * (pageNum - 1),
          height: container.height()
        }).click(function() {
          if (showPage < page) {
            for (var p = showPage + 1; p <= page; p++) {
              anim(p, p * labelWidth);
            }
          } else if (page < showPage) {
            for (var p = showPage; p > page; p--) {
              anim(p, container.width() - (pageNum - p) * labelWidth);
            }
          }
          showPage = page;
        });
      });
    });
  }
})(jQuery);
 ツイート
そっか0
ツイート
そっか0