Movable Type 備忘録
Scrollable with jQuery
- Prev Page: ScrollTo with jQuery
- Next Page: iframe with jQuery
こんばんわ^^
今年もあと僅かですね。
今年はいろいろプログラミングについていい経験させてもらいました。
Movable Type は少し飽きてきたこともあってあまりカスタマイズ記事って書いてない気もしますが、最後の締めくくりとして年内に 1 回くらいは Movable Type に関する記事を書いておこうかなと思う今日この頃です。てか、それ以前に Movable Type ってずっと話題がないんだよねぇ (; ̄∇ ̄A
さて、jQuery の記事は今年が最後になるかな。
マウスホィールでもスクロール可能な、ギャラリー的なイメージ表示に良さそうプラグインを使ってみました。
Scrollable プラグインと MouseWheel プラグインを連携させて表示させてます。
MouseWheel プラグインは他でも使えそうなかんじです。
使い方
このプラグインが提供する、スクロール機能、マウスホィール機能自体は難なく実装できます。
でも、CSS による依存が大きいこともあって実際にサイト内で使おうとするとちょと手間がかかるかもしれません。
それを見越しても魅力的スクロール機能なので是非がんばって欲しいのココロ。
基本的には以下のようなマークアップになります。
マークアップ
<div id="scrollable"><div class="navi"></div><a class="prev"> </a><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><a class="next"> </a></div>
まず青字のように大枠なブロックとして囲います。
赤字はページナビゲーションになります。不要であれば削除可能です。
緑字は NEXT / PREVIOUSE ボタンになります。不要であれば削除可能です。
そして、黄色字がスクロール対象のアイテム( イメージ群 )になります。
大まかにはこんなかんじになります。
そして上記マークアップに対する Scrollable プラグインのコードは以下の通りになります。
Scrollable プラグインコード
$(document).ready(function() {$('#scrollable').scrollable({size: 5,vertical: false,speed: 300,prev:'.prev',next:'.next',navi:'.navi',naviItem:'span',activeClass:'active',items: '.items',loop: false,clickable: true,onSeek: null});});
赤字のセレクタには、上記マークアップでいうところの、青字を指定します。
各パラメータの説明を以下に記します。
size
表示するアイテムの個数を指定します。以下の図の赤枠で示すように、常に見えるアイテムの個数を指定します。

デフォルトは 5 アイテムになります。
speed
スクロール・スピードをミリ秒で指定します。デフォルトは 300 ミリ秒です。
prev
PREV ボタンのセレクタ名称を指定します。デフォルトは上記マークアップの緑字のように、 prev クラスとなります。
next
NEXT ボタンのセレクタ名称を指定します。デフォルトは上記マークアップの緑字のように、 next クラスとなります。
navi
ページナビゲーションセレクタ名称を指定します。デフォルトは上記マークアップの赤字のように、 navi クラスとなります。
naviItem
ページナビゲーションの各ページをマークアップする際のタグを指定します。デフォルトは span タグで括られます。
実際にページナビゲーションは以下のようにマークアップされるようです。ページナビゲーション・マークアップ
<div class="navi"><span page="0" class="active"></span><span page="1" ></span><span page="2" ></span><span page="3" ></span></div>
青字はカレントページを示すクラスになります。CSS で div.navi span.active のようにスタイルすることができます。
activeClass
ページナビゲーションのカレントページに付加されるクラス名を指定します。 上記 naviItem で触れてますが、このオプションで指定したクラス名称がカレントページとして付加されます。
items
スクロールさせたいアイテムのセレクタ名を指定します。上記例のマークアップでいうところの、黄色字のクラス名を指定します。 デフォルトは items クラスになります。
loop
アイテムをループして表示できるようにするか否かを指定します。
- true: ループします。
- falase: ループしません。デフォルトです。
clickable
各アイテムをクリック可能とするか否かを指定します。
- true: クリック可能とします。デフォルトです。
- falase: クリック不可とします。
onSeek
スクロールされた後に何らかの処理を実行させたい場合に任意のファンクションを指定することができます。
注意すること
ページナビゲーションのマークアップについて
ページナビゲーションのマークアップで <div class="navi">●●●</div> のように●●●を入れてしまうと正しくページナビゲーションが表示されませんでした。 どうやらここには何も挟んではダメなようです。
ページナビゲーションのイメージは縦ロールオーバーより横ロールオーバーの方がいいかも
ページナビゲーションには dots.png というイメージファイルが使われてます。 このイメージファイルは、カレントページ用、ホバー時用のイメージをロールオーバーで使えるようになってます。
デフォルトの CSS では縦ロールオーバーとなってますが、これだと IE では上手く表示できませんでした。
なので、上記サンプルでは横ロールオーバーに変更することで IE でも表示できるよう変更してます。デフォルトの CSS では IE においてレイアウトが崩れる
機能としては満たしてるのですがデザイン上頂けないです(つω-`。)
また、先ほども言ったように CSS による依存が大きいので CSS で各自のサイトに合わせてデザインする必要があるみたい。
なので、上記サンプルで使ってる CSS 内に少しコメント入れてますので参考にしてください。スタイルシート
div.scrollable {position: relative;background-color:#222;border:1px solid #666;padding:10px;-moz-border-radius:5px;margin-top:30px;}div.horizontal {width: 436px;/*436px = [div.items] width(384) + [div.items] margin(8) + [div.items a] margin(8) + [a.prev & next] width(18) x 2*/height: 68px;}div.vertical {padding: 10px 0;width:108px !important;/*104px = [div.items a] width(88) + [div.items] margin(8) + [div.items a] margin(8)*/height:218px;/*218px = ([div.items a] height(66) + [div.vertical a] margin(10)) x 3 - 10px*/float:left;}/* container for the scrollable items */div.horizontal div.items {height:66px;margin-left:8px;/*makes it to the same value as [div.items a] right-margin*/float:left;width: 384px !important;/*384px = ([div.items a] width(88) + [div.items a] margin(8)) x 4*/}div.vertical div.items {width:88px;height:218px !important;/*makes it to the same value as [div.vertical] height*/}/* single item */div.items a {display:block;width:88px;height:66px;background:url(img/entry.gif) 0 0 no-repeat;font-size:50px;color:#ccc;line-height:66px;text-decoration:none;text-align:center;cursor:pointer;font-family:verdana;}div.items a {float:left;margin-right:8px;}div.items a.active {background-position:-176px 0;/*176px = [div.items a] width x 2*/color:#555;cursor:default;}div.vertical a {margin-bottom:10px;}div.vertical div.items a {float:none;}/* next / prev buttons */a.prev, a.next {background:url(img/left_black.png) no-repeat 0 0;display:block;width:18px;height:18px;float:left;margin:22px 0 0 0;cursor:pointer;}a.next {background-image:url(img/right_black.png)}a.prev:hover {background-position:0 -18px;}a.next:hover {background-position:0 -18px;}/* navigator */div.navi {position:relative;top:-30px;left:248px;/*suitably adjusts it*/margin-left:-60px;width:60px;height:0;}div.vertical div.navi {left:75px;width:80px;}* html div.navi {/*for IE*/}/* items inside navigator */div.navi span {width:8px;height:8px;float:left;margin:3px;background:url(img/dots_black.png) 0 0 no-repeat;cursor:pointer;}div.navi span:hover {background-position:-8px 0;/*horizontal rolling over*/}div.navi span.active {background-position:-16px 0;/*horizontal rolling over*/}
以上です。
余談ですが以下のようなプラグインもあります。
Trackback Pings(0)
No trackbacks found.
Comments(0)
No comments found.




Post a Comment