script.aculo.us の slider.js による逆向き縦スライダー

script.aculo.us ライブラリの slider.js による縦方向のスライダーは、通常、上が最小値、下が最大値だが、これを逆にし、上が最大値、下が最小値にする。
スライダーのハンドルをドラッグし上下に動かすと、現在の値を動的に表示し、最終的には、移動後の位置の値を表示する。スライダーのハンドルを上端に移動すると、最大値となり、スライダーのハンドルを下端に移動すると、最小値となる。

実装例

70

実装例の動作について

スライダーの初期値は、「70」を指定してある。
スライダーのハンドル(黒い部分)をドラッグし上下に動かすと、スライダー下の「70」の数字が変化する。スライダーのハンドルを下端に動かすと「0」になる。スライダーのハンドルを上端に動かすと「100」になる。その間は、0より大きく、100より少ない、整数になる。
スライダーのトラック部分(グレーの部分)をクリックすると、瞬時に、その位置へハンドルが動く。

ソースコード

JavaScript

<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="scriptaculous/slider.js"></script>
<script type="text/javascript">
<!--
window . onload = function () {
    new Control . Slider( 'slider-handle', 'slider-track', {
        axis: 'vertical',
        range: $R( 0, 100),
        sliderValue: '30',
        onSlide: function( value ) { $( 'slider-value' ) . innerHTML = Math . round( 100 - value ) },
        onChange: function( value ) { $( 'slider-value' ) . innerHTML = Math . round( 100 - value ) }
    } );
}
// -->
</script>

CSS

<style type="text/css">
<!--
#slider-track {
    background-color: gainsboro;
    width: 20px;
    height: 100px;
    border-radius: 10px;
    border: 1px gray solid;
}
#slider-track:hover {
    background-color: lightgray;
}
#slider-handle {
    background-color:#333333;
    width: 20px;
    height: 20px;
    border-radius: 10px;
    cursor: pointer;
}
#slider-handle:hover {
    background-color: black;
}
#slider-value {
    background-color: black;
    color: white;
    width: 22px;
    font-size: 10px;
    text-align: center;
    border-radius: 5px;
    margin-top: 2px;
}
-->
</style>

HTML

<div id="slider-track">
    <div id="slider-handle"></div>
</div>
<div id="slider-value">70</div>

要点解説

JavaScript

<script type="text/javascript" src="prototype.js"></script>

prototype.js を読み込む。

<script type="text/javascript" src="scriptaculous/slider.js"></script>

script.aculo.us ライブラリの slider.js を読み込む。

<script type="text/javascript">
<!--
window . onload = function () {
    new Control . Slider( 'slider-handle', 'slider-track', {
        axis: 'vertical', // スライダーを縦にする
        range: $R( 0, 100), // 範囲を 0~100 に設定
        sliderValue: '30', // 初期値を 30 に設定
        onSlide: function( value ) { $( 'slider-value' ) . innerHTML = Math . round( 100 - value ) },
            // スライダーのハンドルをスライドさせているときの値を 100 から減算した値を、さらに四捨五入し整数値にし、id が slider-value の要素に表示
        onChange: function( value ) { $( 'slider-value' ) . innerHTML = Math . round( 100 - value ) }
            // スライダーのハンドルの移動後の位置の値を 100 から減算した値を、さらに四捨五入し整数値にし、id が slider-value の要素に表示
    } );
}
// -->
</script>

スライダーのハンドルの位置の値を、100 から減算することで、上が最大値の 100 、下が最小値の 0 になるようにしている。

スポンサード リンク

カテゴリー: GUI, JavaScript, prototype.js, script.aculo.us, slider パーマリンク