【連載】
Script.aculo.usは、Thomas Fuchs氏を中心とするチームにより開発されているJavaScriptライブラリだ。MITライセンスが採用されており、2005年から公開を始め、執筆時点では11月に公開されたバージョン1.8が最新版になる。本稿では、そのバージョン1.8を使って(連載継続中にバージョンアップした場合はそちらに変更する可能性がある)、同ライブラリの基本を6回にわたって紹介しよう。
なお、Script.aculo.usを扱ううえでの必須知識となるPrototype.jsの使用法については、連載『いまからはじめるPrototype.js』で解説しているので、そちらをご覧いただきたい。
Script.aculo.usはPrototype.jsをベースに動作するライブラリだが、Prototype.jsが1つのファイルにすべての機能をまとめているのに対し、Script.aculo.usは8つのファイルに分かれている。それだけ多彩な機能を持っているということだ。スクリプトの容量をすべて合わせると約160KBになる。
単体でもAjaxian.comの2006年と2007年の調査でトップのPrototype.jsの次につけるほどの人気を得ているが、実はPrototype.jsと同様、Webアプリケーション・フレームワークRuby on Railsのプロジェクトで開発されているプロダクトであり、同フレームワークに同梱されているため、Ruby on Rails経由で使用されるケースも多い。
まずは、同フレームワークを利用するための準備をしよう。
Script.aculo.usのトップページからは、scriptaculous-js-xxxxx.zip(xxxxxはバージョン番号)、同.tar.gz、同.tar.bz2の3つの形式のファイルがアップされているので、開発環境で解凍可能なものをダウンロードしていただきたい。
解凍によって生成されたディレクトリ下のsrcディレクトリにscriptaculous.jsをはじめ8つのファイルがある。また、同じ階層のlibディレクトリにはprototype.jsもある。Webページで利用する際は、あらかじめ両者をふくめた*.jsファイルをすべてWebページ用のディレクトリにコピーしておかなければならない。
HTML文書では、以下のようにファイル名を記述しておく。
<script type="text/javascript" src="《ディレクトリ》/prototype.js"></script>
<script type="text/javascript" src="《ディレクトリ》/scriptaculous.js"></script>
この状態でscriptaculous.js以外のファイルも後からすべて自動的にロードされるが、必要なファイルのみをロードするには、src属性の値で"《ディレクトリ》/scriptaculous.js?load=dragdrop,controls"のように、loadオプションで.jsより前の部分のファイル名をカンマ区切りで記述する。
ここからはCore Effectsに含まれる基本的な演出効果を紹介しよう。オプションなど詳細はWikiサイトで確認していただきたい。なお、特別な場合を除き、省略可能な記述は[~]で表す。
実行後に、指定された要素の背景色を開始色から終了色まで(デフォルトでは1秒間かけて)変化させる
new Effect.Highlight( 'demo', { startcolor : '#ffff33', endcolor : '#ffffff',
duration : 2 } );
または
$( 'demo' ).highlight( { startcolor : '#ffff33', endcolor : '#ffffff',
duration : 2 } );
※ 操作対象 : <div id="demo">背景色が変化する</div>
実行前の状態からスタイルシートの状態に(デフォルトでは1秒間かけて)変化させる
new Effect.Morph( 'demo', { style : 'width : 150px; height : 150px; font-size : 25pt;', delay : 0.5 } );
または
$( 'demo' ).morph( 'width : 150px; height : 150px; font-size : 25pt;',
{ delay : 0.5 } );
※ 操作対象 : <div id="demo">大きさが変化する</div>
xとyの距離だけ移動させる。relative(デフォルト)では何度も同じ距離だけ動くが、absoluteは最初の1回しか動かない。
new Effect.Move( 'demo', { x : 100, y : 50, mode : 'absolute' } );
※ 操作対象 : <div id="demo">位置が動く</div>
透明度をfromからtoまで変化させる。デフォルトではfromが開始時点もしくは0%(まったく見えない)、toは100%に設定されるが、最低でもfromかtoの一方は指定されていなければならない。
new Effect.Opacity( 'demo', { from : 1, to : 0.2, duration : 2 } );
※ 操作対象 : <div id="demo">徐々に透明になる</div>
拡大/縮小率(もとの大きさを100とする)の分だけ拡大/縮小する。このとき指定されたテキストのフォントサイズも同じ比率で拡大/縮小する。オプションはドキュメント参照。
new Effect.Scale( 'demo', 150, { scaleFromCenter : true } );
※ 操作対象 : <div id="demo">大きさが変化する</div>
上記を含む各種の演出効果を同時並行して実行する
new Effect.Parallel( [
new Effect.Opacity( 'demo1', { from : 1, to : 0.2, sync : true } ),
new Effect.Scale( 'demo2', 150, { sync : true } )
] );
※ 操作対象 : <div id="demo1">徐々に透明になる</div>
<div id="demo2">大きさが変化する</div>
次回は、これらを組み合わせた複合的な動作をするものを紹介したい。
| Twitter、サイト作成用フレームワーク「Bootstrap 2.0」を公開 [16:55 2/7] |
| ネットワールド、業界初のディスクレスVDIを発表 [15:12 2/7] |
| ラリタン、1台で8サーバにノンブロッキングアクセス可能なKVMスイッチ [12:45 2/7] |
| ST、SD 3.0規格に準拠する電圧レベル・トランスレータを発表 [11:28 2/7] |
| Microchipなど、chipKIT向けIDE対応のCerebot Development Boardを発表 [11:01 2/7] |
|
あの腕章やメガネがモチーフに - ペルソナシリーズのシルバーアクセサリー [17:00 2/7] ホビー |
|
卵を割って中身を捨てた……。疲れているなぁと思うエピソード集 [17:00 2/7] キャリア |
|
Twitter、サイト作成用フレームワーク「Bootstrap 2.0」を公開 [16:55 2/7] エンタープライズ |
|
ニコン、圧倒的高画質の3,630万画素フルサイズCMOS搭載「D800」「D800E」 [16:43 2/7] 家電 |
|
「銀魂」キャラ56名の総選挙!上位はフィギュアで商品化 [16:42 2/7] ホビー |