11月11日の技術勉強会
11月1日に行われました技術発表会の内容を撮影した動画ファイルを公開いたしました。内容は以下のとおりです。
テーマ | script.aculo.us |
---|---|
発表者 | d:id:aql |
時間 | 12:03 |
ファイルサイズ | 64,137,372Bytes |
以下よりダウンロードしてご覧ください。
http://www.hatena.ne.jp/sound/tech/051111hatenatech.wmv
今回の発表はビデオカメラの都合により、途中で動画が終了してしまいます。その後の内容は以下の音声ファイルにて公開させていただきますので、ご了承ください。
http://www.hatena.ne.jp/sound/tech/051111hatenatech.mp3
scriptaculousとは…
- prototype.jsをベースにしたJavaScriptライブラリ
- コントロールやエフェクトを簡単に
- 作者:Thomas Fuchs
- MITライセンス
- http://script.aculo.us/
構成
- scriptaculous.js
- 他のライブラリをロードする
- builder.js
- 要素を作る
- effects.js
- エフェクト
- dragdrop.js
- ドラッグ&ドロップを実現
- controls.js
- Ajax関連
- slider.js
effects.jsをメインに見てみる
effects.js
複合エフェクト
コアエフェクトを組み合わせて作られたエフェクト
自分でエフェクトを作る時のサンプルコードにもなる
- Effect.Fade( element )
- Effect.Appear( element )
- フェードイン・フェードアウト
はてなEffect.FadeEffect.Appear
- Effect.Puff( element )
- 吹いて飛ぶ
- Effect.BlindUp( element )
- Effect.BlindDown( element )
- スライドして隠される・現れる
- Effect.SwitchOff( element )
- Effect.DropOut( element )
- 落ちて消える
- Effect.Shake( element )
- ふるふる
- Effect.SlideUp( element )
- Effect.SlideDown( element )
- スライドして隠される・現れる
- BlindUp/Downとはちょっと違う
- Effect.Squish( element )
- つぶれる
- Effect.Grow( element )
- Effect.Shrink( element )
- 縮む・膨らむ
- Effect.Pulsate( element )
- 点滅
- Effect.Fold( element )
- 折り畳む
コアエフェクト
クラスになっている
newすればデフォルト動作をする(コンストラクタを動かすだけでエフェクトが適用される)
はてなEffect.Highlight
- Effect.Scale
- サイズを変化させる
- new Effect.Scale( element, percent )
- Effect.MoveBy
- エレメントを移動させる
- new Effect.MoveBy( element, toTop, toLeft )
- Effect.Opacity
- 透明度を変化させる
- new Effect.Opacity( element )
はてなEffect.Opacity
- サンプルコードは、オプションで開始と終了を設定している
- Effect.Parallel
はてなEffect.Parallel
オプションを設定すれば挙動を変えられる
- duration
- エフェクトの所要時間(秒)
- from
- to
- 開始時と終了時(Opacityで0.5(半透明)から始めたりできる)
- delay
- イベント開始からエフェクト開始までの遅れ(秒)
開始や終了の時にフックすることも出来る
- beforeStartInternal
- 開始直前
- 初期化などは済んだ状態
- beforeSetupInternal
- afterSetupInternal
- beforeUpdateInternal
- afterUpdateInternal
- beforeFinishInternal
- afterFinishInternal
- 終了後
旧util.jsから移動したユーティリティもある
- Element.Class.toggle( element, className )
- Element.Class.toggle( element, className1, className2 )
- classNameをトグルする
- ( element, className )ならclassNameをオンオフ
- ( element, className1, className2 )ならclassName1とclassName2をトグル
- classNameをトグルする
その他のライブラリ
ざっと俯瞰
scriptaculous.js
- Scriptaculous.require
Scriptaculous.require('/path/to/script.js');
builder.js
- いまのところBuilder.nodeだけ
dragdrop.js
- Draggable
- ドラッグ可能なエレメントを作る
- new Draggable( element, options );
はてな
コールバック
- change
- ドラッグ中に呼ばれる
コールバック
sortable1sortable2sortable3
- 内部の指定された要素が並べ替え可能になる
- 内部の要素をDraggableにする必要はない
- 中で勝手にやるので
コールバック
controls.js
- paramName
- token
- frequency
- minChars
コールバック
- afterUpdateElement
はてな
- okText
- cancelText
- savingText
- formId
- externalControl
- rows
- cols
- size
- savingClassName
- formClassName
- loadTextURL
- loadingText
- callback
- ajaxOptions
コールバック
- onComplete
- onFailure
slider.js
- Control.Slider
- スライダーを作る
- new Control.Slider( element, track, options )
■
- axis
- increment
- step
- alignX
- alignY
- disabled
- maximum
- minimum
- sliderValue
- handleImage
- handleDisabled
- values
- [10, 20, 30, 40]
コールバック
- onSlide
- onChange