prototype.jsでイメージのポップアップを作成するprototype.jsでイメージのポップアップを作成するVBで言う所の、ツールチップに拡大画像を表示する感じのサンプルです。考え方は、
今回は、scriptaculous.jsを使ってエフェクトを使用してみた。 因みに、このscriptaculous.jsを全てロードするとしんどいので ・・・ipt" src="sc/scriptaculous.js?load=effects"> と必要なものだけをロードすると良いらしい。 (p223「12章 scriptaculousの使い方」Prototype & script.aculo.us ―JavaScriptライブラリによるAjaxアプリケーション開発)
javascript
//ロード時のイベント
Event.observe(document, "dom:loaded", function(){
//alert("");
var myli=$("mypiclist").getElementsByTagName("img");
//alert(myli[0].src);
for (var i=0; myli.length > i;i++){
//p86 Event.observe // イベントハンドラを設定
Event.observe(myli[i], "mouseover", mover_handler);
Event.observe(myli[i], "mouseout", mout_handler);
}
});
function mover_handler(e){
//イベント元のアイテム取得
var it = e.element();
var p = Position.positionedOffset(it);
//ポップアップウィンドウ作成 thisはこの関数自身を指す。便利なオブジェクト?!
this.element=document.createElement("div");
this.element.id="popwindow";
//body要素を取得して、bodyに追加
var addb=document.getElementsByTagName("body").item(0);
addb.appendChild(this.element)
var str="";
str = "<img width=\"320\" height=\"240\" src=\"" + it.src + "\" />";
$("popwindow").innerHTML=str;
//スタイルを設定しています
$("popwindow").setStyle('display: none');
$("popwindow").setStyle({top: + (p[1]+60) + 'px'});
$("popwindow").setStyle({left: + (p[0]) + 'px'});
//scriptaculous.jsを使用
//因みに[http://javascriptist.net/]に非常に多くの分かりやすいサンプルが掲載されています!
new Effect.Appear("popwindow", {
from:0.1, // 開始時透明度
to:1.0, // 終了時透明度
delay:0, // 開始までの秒数
fps:60, // フレームレート
duration: 1.0, // アニメーションする時間(秒)
beforeStartInternal: function(effect) {
//スタート前の処理
},
afterFinishInternal: function(effect) {
//終了後のしょり
}
});
//alert("");//デバグ用
}
function mout_handler(e){
//ポップアップを消す
var it = e.element();
if (it.tagName == "IMG"){
if ($("popwindow")) {
//かくして
$("popwindow").hide();
//要素を削除する場合はいつも、
//親要素から子要素(popwindow)を消す、手順になるようだ。
this.element = document.getElementById("popwindow");
var paele =this.element.parentNode;
paele.removeChild(this.element);
//alert("");//デバグ用
}
}
}
|