読者です 読者をやめる 読者になる 読者になる

jQuery でスクロールを表現するプラグイン、【scrollable】にオプションを書き加えてみた

jQuery は色々なプラグインがあります。
多すぎて、もはや把握できていませんが・・・。


要素を div 内でスクロールさせたかったため、
jquery.scrollable-0.13.js
を使わせていただきました。

いやー。css もついていて、なかなか綺麗にできますね。
(※今回はデザインが余計だったため、css は全て書き直しましたが・・・orz)

スクロールを囲む要素の幅が自動で決まる

さて、このプラグイン、スクロールを囲む要素の幅を自動で決めてくれます。
たとえば、

<div id="scrollable"> 
    <div class="items"> 
        <a>1</a>  <a>2</a>  <a>3</a>  <a>4</a>  <a>5</a> 
        <a>6</a>  <a>7</a>  <a>8</a>  <a>9</a>  <a>10</a> 
        <a>11</a> <a>12</a> <a>13</a> <a>14</a> <a>15</a>         
    </div> 
</div> 
<script> 
    $("#scrollable").scrollable(); 
</script>

こんな場合、スクロールする要素の一つ目と二つ目である

<a>1</a><a>2</a>

の幅を取ってきて、その値から、

<div class="items">

の適した値を自動設定してくれるのです。


例えば、1スクロール画面内には5個の要素を出したい場合、

<script> 
    $("#scrollable").scrollable({size: 5}); 
</script>

このようにして、個数を指定すると、ちょうど要素が5個表示されるような幅になります。
なんて便利な!!

やっているのは、この部分。

if (opts.horizontal) {
    	itemRoot.width(opts.size * (this.items.eq(1).offset().left - this.items.eq(0).offset().left) -2);
} else {
	itemRoot.height(opts.size * (this.items.eq(1).offset().top - this.items.eq(0).offset().top) -2);	
} 
しかし、自分で幅を指定したい・・・。

でも、今回はスクロールする要素を rss から取得するため、動的に変わるのです・・・。
そのたびに、div の幅が変わるのはイヤじゃ・・・。

なので、書き換えた。

まずオプション

var opts = {
    optwidth: 0,
    size: 5,
    vertical:false,

optwidth って名前にしてみました。


幅指定部分も書き換えたよ

	if (opts.horizontal) {
	    if (opts.optwidth != 0) {
	        itemRoot.width(opts.optwidth);
	    } else {
	    	itemRoot.width(opts.size * (this.items.eq(1).offset().left - this.items.eq(0).offset().left) -2);
	    }
	} else {
		itemRoot.height(opts.size * (this.items.eq(1).offset().top - this.items.eq(0).offset().top) -2);	
	} 


使うときは・・・

<script> 
    $("#scrollable").scrollable({optwidth: 500}); 
</script>


ってな感じ。


これで、毎回指定した幅の div になってくれました。
よかったよかった。