prototype.jsでイメージのスライドショーを作成する(試作版)prototype.jsでイメージのスライドショーを作成する(試作版)prototype.jsでカルーセル(Carousel)を自作してみたくて、試作したもの。ただ、画像の表示を変えるのは簡単だが、 ぐるぐると永久に回り続けるメリーゴーランドのように画像を連続して、かつ移動表示させるのは面倒しい。 で、 まだ、左にしか動かない。 基本はこのようなものでよいのか?も思案中。 課題としては、
二日酔いの為、今回はここまで。 javascript var mysrc=[];//画像パスが入る配列 var i=0; var can_move=true; //ロード時のイベント Event.observe(document, "dom:loaded", function(){ //alert(""); var myli=$("mypiclist").getElementsByTagName("img"); //alert(myli[0].src); for (var i=0; myli.length > i;i++){ mysrc.push(myli[i].src);// 画像パスだけ取得 } Event.observe($("move_left"), "click", mover_handler); //画像枚数によって幅を変える $("mypiclist").setStyle({width: + (mysrc.length * 80) + 'px'}); //最初に移動させておく left_move(); }); function mover_handler(e){ //イベント元のアイテム取得 //var it = e.element(); //二重クリック防止 if (can_move == false){ return; } can_move=false; left_move(); //alert("");//デバグ用 } //左へ移動 function left_move(){ new Effect.MoveBy("mypiclist", 0, -80, { duration:0.5, fps:60, delay:0, beforeStartInternal: function(effect) { //位置移動 $("mypiclist").setStyle('left: 0px'); //先頭の画像を末尾に追加する mysrc.push(mysrc[0]); //先頭画像を削除 mysrc.shift(); //alert(""); //中身を書き換える var strhtml=""; for (i=0; mysrc.length > i; i++){ strhtml = strhtml + "<li><img src=\"" + mysrc[i] + "\" width=\"80\" height=\"60\" style=\"cursor: pointer;\"></li>"; } $("mypiclist").innerHTML=strhtml; }, afterFinishInternal: function(effect) { //ボタンを押せるようにする can_move=true; } }); } |