Slider Gallery - jQuery UIによるApple風スライドギャラリーの実装

2012/02/08 17:47 Update
TAGS: スライダー | スライド | ギャラリー | jQuery | jQueryUI | JavaScript
jQueryとjQuery UIを利用してApple風スライドギャラリーを実装した記事です。

<<原文はこちら>>

まずは完成品のイメージから:
jquery-ui-apple-slider.jpg

<<デモはこちら>>

動作環境


◇ jQuery:jquery.js
◇ jQuery UI:
    jquery.dimensions.js
    ui.mouse.js
    ui.slider.js

実装手順


1)jQueryとjQuery UIプラグインを記述
<script src="jquery.js" type="text/javascript"></script>
  
<script src="jquery.dimensions.js" type="text/javascript"></script>
<script src="ui.mouse.js" type="text/javascript"></script>
<script src="ui.slider.js" type="text/javascript"></script>


2)HTML/CSSコード定義
HTMLコード
        <div class="sliderGallery">
            <ul>
                <!-- イメージ定義ここに -->
                <li><img src="some1.jpg" /></li>
                <li><img src="some2.jpg" /></li>
                <li><img src="some3.jpg" /></li>
                ...
            </ul>
            <div class="slider">
                <!-- ハンドル定義 -->
                <div class="handle"></div>
                <span class="slider-lbl1">Wi-Fi</span>
                <span class="slider-lbl3">Macs</span>
                <span class="slider-lbl4">Applications</span>
                <span class="slider-lbl5">Servers</span>
            </div>
        </div>


CSSコード
/** スライダー・ギャラリー コンテナー */
.sliderGallery {
    overflow: hidden;
    position: relative;
    padding: 10px;
    height: 160px;
    width: 960px;
}

/** スライダー・ギャラリー アイテム */
.sliderGallery UL {
    position: absolute;
    list-style: none;
    overflow: none;
    white-space: nowrap;
    padding: 0;
    margin: 0;
}

.sliderGallery UL LI {
    display: inline;
}

/** スライダー ハンドル */
.handle {
    position: absolute;
    cursor: move;
    top: 0;
    z-index: 100;
    /* bespoke to your own solution */
    height: 17px;
    width: 181px;
}


3)スライダー・ギャラリー初期化
    <script type="text/javascript" charset="utf-8">
        window.onload = function () {
            var container = $('div.sliderGallery');
            var ul = $('ul', container);
            
            var itemsWidth = ul.innerWidth() - container.outerWidth();
            
            $('.slider', container).slider({
                min: 0,
                max: itemsWidth,
                handle: '.handle',
                stop: function (event, ui) {
                    ul.animate({'left' : ui.value * -1}, 500);
                },
                slide: function (event, ui) {
                    ul.css('left', ui.value * -1);
                }
            });
        };
    </script>

.

Sponsored Link


有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Comments