

simplelibとはjQueryを利用した様々なプラグインを動的にロードして、ウェブサイトを構築する上でよく使う機能を一元管理するためのツールです。
各プラグインを別ファイルにし、必要なファイルだけをロードします。ダウンロードはこのページの一番下にあります。
現在以下のようなプラグインがあり、HTMLに1行追加するだけでこれら全ての機能を追加できます。
| accordion | シンプルなアコーディオンナビゲーション |
|---|---|
| button | マウスオーバーやマウスダウンで画像を切り替えたり、選択状態と非選択状態によって画像を切り替える |
| checkAll | チェックボックスの一括選択 |
| fixHeight | 要素の高さを揃える |
| gaEventTracker | Google Analyticsでローディング時間、スクロール量、バナーに対するアクションを取得 |
| ie6Png2Gif | Internet Explorer 6で、PNGをGIFに置換する |
| ie6PngFix | Internet Explorer 6でも透過PNGを使えるようにする |
| ie6PositionFixed | Internet Explorer 6でもCSSの position:fixed を使えるようにする |
| imgSwap | a要素をクリックして、既存のimg要素の画像を切り替える |
| lightBox | jQuery lightBoxプラグインを読み込む |
| overlayOthers | 指定した要素の子のa要素にマウスオーバーすると他のa要素にcssで背景色や背景画像を指定できる半透明の要素をかぶせる |
| scroll | スムーススクロール |
| tab | シンプルなタブナビゲーション |
| textHint | 未入力で非選択時のテキストボックスにヒントを表示する |
| trimmedScroll | img要素を含むa要素にマウスオーバーすると別の画像をそのimg要素のサイズにトリミングしてスクロールしながら表示する |
| zoomView | img要素にマウスオーバーすると拡大画像を表示する |

scriptタグでjQueryを読み込んだ後に、simplelib.jsを読み込みます。その際、src属性にsimplelib.jsのパス指定のあとに「?」(半角クエスチョンマーク)をつけて、読み込むプラグインを「,」(半角カンマ)区切りで指定します。
<script type="text/javascript" src="js/jquery-1.4.1.js"></script> <script type="text/javascript" src="js/simplelib.js?rollOver,scroll,ie6PngFix"></script>
※プラグインのスペル間違いやpluginsフォルダにプラグインファイルが存在しない場合などはコンソールにエラーメッセージが出力されます。 コンソールはSafariの開発メニューやFirefoxのプラグインFirebugなどを利用すると確認できます。
simplelibでは各プラグインのオプション設定を一元管理して設定することができます。
設定をカスタマイズするにはsimplelib.jsを読み込む前にJavaScriptで「SimpleLibSettings」というオブジェクトを定義して、オプション設定を記述します。
プラグインごとのオプション設定は各プラグインの使い方で説明します。
<script type="text/javascript" src="js/jquery-1.4.1.js"></script>
<script type="text/javascript">
var SimpleLibSettings = {
//buttonプラグインのfadeオプションを設定
button: { fade:true },
//imgSwapプラグインをクリックではなく、ロールオーバーで発動させるように変更
imgSwap: { trigger:"mouseover" }
};
</script>
<script type="text/javascript" src="js/simplelib.js?button,imgSwap"></script>

HTMLの記述だけで実現できるシンプルなアコーディオンナビです。入れ子もできます。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .accordion | アコーディオンをグループ化するための親要素のセレクタ |
| handleSelector | .handle | 開閉させるためのボタンとして機能するa要素のセレクタ |
| selectedClass | selected | 選択状態の要素に付与するクラス |
| time | 300 | 開閉するアニメーションの時間(ミリ秒) |
<div class="accordion"> <dl> <dt><a href="#AccordionPanel01" class="handle selected">ハンドル1</a></dt> <dd id="AccordionPanel01"> <p> パネル1。これはダミーテキストです。これはダミーテキストです。 これはダミーテキストです。これはダミーテキストです。 これはダミーテキストです。 </p> </dd> <dt><a href="#AccordionPanel02" class="handle">ハンドル2</a></dt> <dd id="AccordionPanel02"> <p> パネル2。ハンドル2にはあらかじめ「selected」というクラスが付与されています。 これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。 これはダミーテキストです。これはダミーテキストです。 </p> </dd> <dt><a href="#AccordionPanel03" class="handle">ハンドル3</a></dt> <dd id="AccordionPanel03"> <p> パネル3。これはダミーテキストです。これはダミーテキストです。 これはダミーテキストです。これはダミーテキストです。 これはダミーテキストです。 </p> </dd> </dl> </div>
マウスオーバーやマウスダウンで画像を切り替えたり、選択状態と非選択状態によって画像を切り替えます。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| buttonSelector | a.button, input.button | マウスオーバー/マウスダウンの画像切り替えを発動させる要素のセレクタ |
| rollOverSelector | a.rollover, a.rollOver, input.rollover, input.rollOver | マウスオーバーの画像切り替えを発動させる要素のセレクタ |
| over | true |
マウスオーバーに反応させるかどうか trueにするとマウスオーバー時に元の画像ファイル名に-overを付けた画像が表示されます。 画像は自動的にプリロードされます。 |
| down | true |
マウスダウンに反応させるかどうか trueにするとマウスダウン時に元の画像ファイル名に-downを付けた画像が表示されます。 画像は自動的にプリロードされます。 |
| selected | true |
選択状態を有効にして、必要な画像をプリロードするかどうか 以下のようにスクリプトで選択状態を変更できます。 $("selector").button("selected",true); $("selector").button("selected",false); |
| enableMouseEventsSelected | true | 選択状態になったときにもマウスオーバー/マウスダウンの画像切り替えを発動させるかどうか |
| fade | false | 画像の切り替え時にフェードイン/フェードアウトさせるかどうか。(<a>要素のみ) |
| fadeTime | 300 | フェードイン/フェードアウト時間 |
<a href="#" class="button"><img src="./images/button.gif" alt="button" width="120" height="55" /></a>
JavaScriptから利用する場合、jQueryのプラグインとして、 $("#Selector").button( options ) のようにして呼び出すことができます。
また、タブメニューなどで使えるように選択状態の管理もできるようになっています。
選択状態の機能を利用する場合は「-selected」や「-selected-over」などのファイル名の付いた画像を用意しておく必要があります。選択状態の時のマウスイベントによる画像切り替えをOFFにする場合は「enableMouseEventsSelected」オプションをfalseに設定します。
//マウスオーバー、マウスダウン、選択状態、フェードイン/フェードアウトを有効にする
$("#Selector").button( { over:true, down:true, selected:true, fade:true } );
//画像の状態を切り替える
$("#Selector").button( "over" );
$("#Selector").button( "out" );
$("#Selector").button( "down" );
$("#Selector").button( "up" );
//選択状態にする
$("#Selector").button( "selected", true );
//選択状態を解除
$("#Selector").button( "selected", false );
//選択状態を交互に切り替え
$("#Selector").button( "selected", "toggle" );
SimpleLib.bind( "init_button", function(){
$(function(){
$(".customButton").button( { over:true, down:true, selected:true, fade:true } );
$(".customButton").click( function(){
$(this).button( "selected", "toggle" );
return false;
});
});
}, true );
対象のチェックボックスを一括で選択/解除できるチェックボックスを作成します。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .checkAll | プラグインを発動させる要素のセレクタ |
<form> 選択してください。<label><input type="checkbox" class="checkAll" /> 全てを選択</label> <ul> <li><label><input type="checkbox" /> XHTML</label></li> <li><label><input type="checkbox" /> CSS</label></li> <li><label><input type="checkbox" /> JavaScript</label></li> <li><label><input type="checkbox" /> ActionScript</label></li> </ul> </form>
複数のブロック要素の高さを揃えます。
高さを揃えたい要素たちの親要素に「fixHeight」というクラスを付与すれば、行ごとにそれぞれ一番高い要素に合わせて高さが設定されます。
詳しい使い方はこちらにあります。
http://www.starryworks.co.jp/blog/tips/javascript/fixheightjs.html
これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。
これはダミーテキストです。これはダミーテキストです。
これはダミーテキストです。
これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。
これはダミーテキストです。
<div class="fixHeight clearfix"> <div> <strong class="fixHeightChildTitle">これはタイトルです</strong> <p class="fixHeightChildBody">これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p> </div> <div> <strong class="fixHeightChildTitle">これは長めのタイトルです</strong> <p class="fixHeightChildBody">これはダミーテキストです。これはダミーテキストです。</p> </div> <div> <strong class="fixHeightChildTitle">これは長〜〜〜〜〜〜〜いタイトルです</strong> <p class="fixHeightChildBody">これはダミーテキストです。</p> </div> <div> <strong class="fixHeightChildTitle">これはタイトルです</strong> <p class="fixHeightChildBody">これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。これはダミーテキストです。</p> </div> <div> <strong class="fixHeightChildTitle">これはタイトルです</strong> <p class="fixHeightChildBody">これはダミーテキストです。</p> </div> </div>
ローディング時間の計測、スクロールバーの有無やスクロール量の計測、バナーのインプレッション、表示(実際に見える位置までスクロールされたかどうか)、マウスオーバー、クリックなどのアクションなどをGoogle Analyticsのカスタムイベントとして解析できるようにします。
Google Analyticsの「イベントのトラッキング」で、「Loading」「Scrolling」「Banner」のカテゴリが作成されます。
※新しいトラッキングコード(ga.js)にのみ対応しています。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| bannerSelector | .gaBanner | バナーとしてアクションを解析する要素のセレクタ |
ローディング時間をより正確に計測するためには、以下のコードを<head>内の一番始めの方に記述してください。
<script type="text/javascript">var gaLoadingStartedOn = new Date().getTime();</script>
IE6で閲覧された場合だけ、PNG画像(<img>のsrc属性やCSSのbackground-image)をGIFに置換します。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .png2gif, .ie6Png2Gif |
プラグインを発動させる要素のセレクタ
(jQueryを利用しているので一部のCSS3セレクタが利用できます) |
<div style="background-image:url(images/ie6pngfix-bg.gif); padding:90px 80px 60px 80px;"> <img src="images/ie6pngfix-img.png" alt="PNG" width="600" height="100" class="png2gif" /> </div>
DD_belatedPNGというスクリプトを読み込んで、Internet Explorer 6でも透過PNGを利用できるようにします。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | img[src$=png], input[src$=png], .pngfix |
プラグインを発動させる要素のセレクタ
(jQueryを利用しているので一部のCSS3セレクタが利用できます) |
<div style="background-image:url(images/ie6pngfix-bg.gif); padding:90px 80px 60px 80px;"> <img src="images/ie6pngfix-img.png" alt="PNG" width="600" height="100" class="pngfix" /> </div>
jQuery.exFixedというプラグインを利用して、Internet Explorer 6でもCSSのposition:fixedを利用できるようにします。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .fixed | プラグインを発動させる要素のセレクタ |
<div style="position:fixed; bottom:0px; left:50%;" class="fixed showIfScroll"> <a href="#" class="scroll rollover"><img src="images/pagetop.gif" alt="このページの先頭へ" width="40" height="40" /></a> </div>
a要素をクリックして、既存のimg要素の画像を切り替えます。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .imgswap, .imgSwap | プラグインを発動させる要素のセレクタ |
| trigger | click | 画像の切り替えを実行するイベント(mouseoverを指定するとロールオーバーで切り替わる) |
| attribute | href | 画像のURLを指定する属性 |
| othersClass | others | あるa要素にロールオーバーした時にその他のa要素に付与されるクラス |
| scrolling | false | trueを指定すると画像を切り替えるときに対象のimg要素が画面内に収まっていない場合、img要素の位置までスクロールする |
| scrollingTime | 400 | scrollingオプションがtrueのとき、目的位置までスクロールする時間(ミリ秒) |
<ul class="clearfix"> <li><a href="images/sanei-pict01.jpg#MainImg" class="imgSwap"><img src="images/sanei-pict01m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="images/sanei-pict02.jpg#MainImg" class="imgSwap"><img src="images/sanei-pict02m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="images/sanei-pict03.jpg#MainImg" class="imgSwap"><img src="images/sanei-pict03m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="images/sanei-pict04.jpg#MainImg" class="imgSwap"><img src="images/sanei-pict04m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="images/sanei-pict05.jpg#MainImg" class="imgSwap"><img src="images/sanei-pict05m.jpg" alt="" width="40" height="40" /></a></li> </ul> <div> <img src="images/sanei-pict01.jpg" alt="" id="MainImg" width="600" height="992" /> </div>
jQuery lightBoxプラグインを読み込みます。
simplelibの「plugins」→「lightBox」ディレクトリ内にある「jquery.lightbox-0.5.css」を自動的に読み込み、同ディレクトリ内にある各画像が利用されます。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | body .lightBox, body .lightbox | プラグインを発動させる要素のセレクタ |
| その他 | jQuery lightBoxのオプションを利用できます。 | |
<ul class="clearfix"> <li><a href="./images/sanei-pict01.jpg" class="lightBox"><img src="./images/sanei-pict01m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="./images/sanei-pict02.jpg" class="lightBox"><img src="./images/sanei-pict02m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="./images/sanei-pict03.jpg" class="lightBox"><img src="./images/sanei-pict03m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="./images/sanei-pict04.jpg" class="lightBox"><img src="./images/sanei-pict04m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="./images/sanei-pict05.jpg" class="lightBox"><img src="./images/sanei-pict05m.jpg" alt="" width="40" height="40" /></a></li> </ul>
指定した要素の子孫のa要素にロールオーバーすると、他のa要素にcssで背景色や背景画像を指定できる半透明の要素がかぶさります。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .overlayOthers | プラグインを発動させる要素のセレクタ |
| opacity | 0.8 | かぶさる要素の不透明度 |
| exceptionSelector | .overlayException | 対象から除外するa要素につけるクラス |
| othersClass | others | あるa要素にロールオーバーした時にその他のa要素に付与されるクラス |
| overClass | over | ロールオーバーしたa要素に付与されるクラス |
| time | 400 | ロールオーバーしたときに指定された不透明度までフェードする時間(ミリ秒) |
| afterTime | 0 | 0以外を指定すると指定された不透明度までフェードした後にさらにここで指定した時間をかけて完全に不透明になる |
<ul class="overlayOthers"> <li><a href="#"><img src="images/sanei-pict01m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="#"><img src="images/sanei-pict02m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="#"><img src="images/sanei-pict03m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="#"><img src="images/sanei-pict04m.jpg" alt="" width="40" height="40" /></a></li> <li><a href="#"><img src="images/sanei-pict05m.jpg" alt="" width="40" height="40" /></a></li> </ul>
.overlay { background-color:#ffffff; }
指定した要素の位置までアニメーションしながらスクロールします。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .scroll | スムーススクロールを発動させる要素のセレクタ |
| time | 600 | スクロールする時間(ミリ秒) |
<div> <ul> <li><a href="#usage01" class="scroll">使い方1</a></li> <li><a href="#usage02" class="scroll">使い方2</a></li> <li><a href="#" class="scroll">ページの先頭へ</a></li> </ul> </div>
未入力で非選択時のテキストボックスおよびテキストエリアにヒントを表示します。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | input.hint, textarea.hint | プラグインを発動させる要素のセレクタ |
| attribute | title | ヒントを設定する属性 |
| blurClass | blur | 非選択時に付与されるクラス |
<form> <input type="text" class="hint" size="30" value="" title="キーワードを入力してください" /> <input type="submit" value="検索" /> </form>
input.blur, textarea.blur { color:#cccccc; }
タブ機能
buttonプラグインが必要です。
このプラグインは自動的にbuttonプラグインをロードします。plubinsディレクトリにbutton.jsがない場合は正しく動作しません。
明示的にbuttonプラグインをロードしても2重にロードすることはありません。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .tabSet | タブと表示を切り替える対象要素を含む親要素のセレクタ |
| tabSelector | a.tab | タブ要素のセレクタ |
| trigger | click |
タブ切り替えのトリガー (click/mouseover/focusなどjQueryで扱えるイベント) |
| その他 | 他にbuttonプラグインと同様のオプションが利用できます。 | |
<div class="tabSet"> <ul class="clearfix"> <li><a href="#TabPanel01" class="tab">タブ1</a></li> <li><a href="#TabPanel02" class="tab">タブ2</a></li> <li><a href="#TabPanel03" class="tab selected">タブ3</a></li> </ul> <div> <div class="panel clearfix" id="TabPanel01"> <img src="./images/sanei-pict01m.jpg" alt="" width="40" height="40" /> コンテンツ1 </div> <div class="panel clearfix" id="TabPanel02"> <img src="./images/sanei-pict02m.jpg" alt="" width="40" height="40" /> コンテンツ2 </div> <div class="panel clearfix" id="TabPanel03"> <img src="./images/sanei-pict03m.jpg" alt="" width="40" height="40" /> コンテンツ3 </div> </div> </div>
div.tabSet ul {
display:block;
}
div.tabSet ul li {
display:block;
float:left;
margin:0px;
padding:0px;
}
div.tabSet ul li a {
display:block;
padding:5px;
background-color: #ccc;
color:#333;
margin-right:5px;
}
div.tabSet ul li a:hover {
background-color: #666;
color:#fff;
}
div.tabSet ul li a.selected,
div.tabSet ul li a.selected:hover {
background-color: #fff;
color:#333;
}
div.tabSet div.panel {
background-color: #fff;
padding:15px;
}
div.tabSet div.panel img {
float:left;
padding-right:10px;
}
img要素を含むa要素にマウスオーバーすると別の画像を元のimg要素のサイズにトリミングしてスクロールしながら表示します。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .trimmedScroll | プラグインを発動させる要素のセレクタ |
| scrollTimePerPixcel | 20 | 1ピクセル当たりのスクロール時間(ミリ秒) |
| fadeTime | 1000 | 元の画像をフェードアウトさせる時間(ミリ秒) |
| scrollImgClass | scroll | スクロールさせる画像に付与するクラス |
<a href="#" class="trimmedScroll"><img src="images/tonan01-thumbnail.jpg" alt="" width="300" height="60" /></a>
img要素マウスオーバーすると、マウスポインタの位置に合わせた拡大画像を表示します。
| オプション | デフォルト | 設定内容 |
|---|---|---|
| selector | .zoomView | プラグインを発動させる要素のセレクタ |
| viewParent | body | 拡大画像の要素を追加する親要素 |
| cssPath | 【SimpleLibのplugins】/zoomView/zoomView.css | 拡大画像の枠の大きさや色のスタイルを記述したCSSファイルのパス |
| margin | 20 | 拡大画像の元のimg要素からの距離 |
| fadeTime | 200 | マウスアウトで拡大画像をフェードアウトさせる時間(ミリ秒) |
<img src="./images/sanei.jpg" alt="" width="120" height="200" class="zoomView" />

ライセンスはMITライセンスです。プラグインで取り込んでいる外部のライブラリについてはそれぞれのライセンスをご確認ください。
開発中のものはgithubからダウンロードしたりフォークしたりできます。
バグを発見された場合やご要望がある場合はgithubで課題を報告してください。
全てのプラグインをダウンロードして、利用する際に<script>タグで必要なプラグインだけを指定して利用できます。
新たなプラグインを使いたくなったら<script>でプラグインの指定を増やすだけで使えるので、制作中に使うのはこちらをお勧めします。
こちらからダウンロードしてください。
simplelib.zip [ 36KB ]
jQueryのダウンロードはこちら
Copyright 2010 STARRYWORKS inc. All rights reserved.