POPSブログ

簡易TRANSITION-PHOTO/3

48

  Category:  jquery2012/03/08 pops 

簡易TRANSITION-PHOTO-3、TRANSITION-PHOTO-2拡大縮小フエードのエフェクトに、簡単なスライドをくわえました。


簡易TRANSITION-PHOTO-3 (スライド + 拡大縮小フエード)

pops-transitionphoto03.js

トランジッション、サンプル表示



HTML構造を直接書きますが、残り画像はJS側スクリプトに記述します。

  • 簡易TRANSITION-PHOTO-2 拡大縮小フエード、に簡単なスライドをプラス。
  • スライド部分は簡略、簡易TRANSITION-PHOTO-2参照ください。
  • IE8 はキレイに動作しません。Google Chrome を利用ください。

簡単な動作の説明

簡易TRANSITION-PHOTO-1、簡易TRANSITION-PHOTO-2、を参照ください。


【参照】TRANSITION-PHOTO-1: 簡易TRANSITION-PHOTO/1

【参照】TRANSITION-PHOTO-2: 簡易TRANSITION-PHOTO/2


設置方法

簡易JS記述、間違いの少ない、setTimeout の通常方式で記述しています。なお、設置するページが違えば、別画像ででも使用できま すが、画像の大きさが違えば別のCSS名で新たに作ってリンクしてください。


[ HTML構造を作る ]
以下のように構造を作ってください。ID は #pops_transition_photo です。


<div id="pops_transition_photo">
	<div id="transit_box">
		<div id="t_imgholder"><img src="/main/images/photo_tm1.jpg" /></div>
		<div id="top_base"><img /></div>
		<div id="t_loading"></div>
		<div id="view_text"></div>
	</div>
</div>

注意、原則、最初の画像を #t_imgholder に書き込んでください。また全画像はJSに登録します。画像伸縮のため幅高さを100%で使用しますので、大きさは記入しないでください。


[ 使用方法 ]、JSを読み込むだけで実行します。またHEAD部分に直接記述しても実行します。
注意、jquery1.42以降のバージョンで作動します。


読み出す場合
<link rel="stylesheet" type="text/css" href="/main/css/pops-transitionphoto03.css" />
<script type="text/javascript" src="/main/js/jquery.js"></script>
<script type="text/javascript" src="/main/js/pops-transitionphoto03.js"></script>

----------------------------------------------------------------

HEAD部分に直接JSを記述する場合
<script type="text/javascript">
	ここにJS部分を直接記述
</script>

JS、CSS、Loading画像

JS pops-transitionphoto03.js 通常方式

ActinScriptのTransitionとは意味がちがいます。中には使用していない変数もあります。


//pops-transitionphoto03.js
//setTimeout loading 通常方式
//POPS WEB KOUBOU

(function($){

	$(function(){

		var bs_W = 640;
		var bs_H = 200;

		var first_time = 12000;//スタートまでの時間、5000以上 
		var cycle_time = 8000;//サイクル 5000以上
		var speed = 1000;//拡大縮小時間 600-1000位画像の大きさによる

		//TEXT表示
		var text_use="";//use

		//画像までのパス
		var path='/main/images/';
		//画像名を登録する
		var img_urls=['photo_tm1.jpg','photo_tm2.jpg','photo_tm3.jpg','photo_tm4.jpg','photo_tm5.jpg'];
		var list_len=img_urls.length;

		//jQueryObjectCache
		var imgholder_elm,trans_base_elm,mid_elm,top_elm;
		var img_url,keep_url,loading;
		var imgPreloader;//opela

		//chash
		trans_base_elm = $('#transit_box');
		imgholder_elm = $('#transit_box #t_imgholder');
		top_elm = $('#transit_box #top_base');
		loading = $('#transit_box #t_loading');

		var view_type = 'move';
		var random_nm = ['move','move','puff','puff'];

		//position
		//move
		var start_pos_x = [],start_pos_y = [],end_pos_x = [],end_pos_y = [];
		//puff
		var puff_type_x = [],puff_type_y = [];

		var count = 0;
		var no = 0;
		var move_type_name = ['in','out','in','out'];
		var in_type = "in";
		var fade_set = "";
		var anime_move = "";

		//opacity使用の判定
		var support_op=true;
		if (!jQuery.support.opacity) {support_op=false;}

		//------------------------------------------------

		//init
		var init = function () {

			//loading-Set
			loading.css({'width':bs_W,'height':bs_H,'display':'none'});
			//Box右移動、非表示
			top_elm.children("img").css({'width':'100%','height':'100%'});
			top_elm.css({'left':bs_W,'top':0,'display':'none'});

			//位置情報取得
			move_set();
			puff_set();

			//最初の画像をINNER画像BOX1にセット表示する
			img_url=path+img_urls[count];
			keep_url=path+img_urls[count];

			//下画像にURLをセット表示/未使用
			//imgholder_elm.children("img").empty().attr({'src':img_url});

			//次ぎの画像の番号セット
			count = 1;

			//START Main-timer-set
			window.setTimeout(nextImage,first_time);

		}

		//動作用の配列データのセット1
		var move_set = function () {
			//move-position
			start_pos_x = [bs_W,-bs_W,0,0];
			start_pos_y = [0,0,-bs_H,bs_H];
			end_pos_x = [0,0,0,0];
			end_pos_y = [0,0,0,0];
			//WH固定のため削除
		}
		//puff動作用の配列データのセット2/比率
		var puff_set = function () {
			//puff
			puff_type_x = [1,0.5,0,1,0.5,0,1,0.5,0,0];
			puff_type_y = [1,1,1,0.5,0.5,0.5,0,0,0,0];
		}

		//表示の種類により振り分け/現在1個だけ
		var set_view_images = function () {

			view_type = random_nm[Math.floor(Math.random() * random_nm.length)];

			if(view_type == 'puff') {
				puff_image();
			}
			if(view_type == 'move') {
				move_image();
			}

		}

		//Puffフエード処理表示
		var puff_image = function () {

			anime_move = 'move';
			fade_set = "fade";

			//opacity
			var start_opacity = 0;
			var end_opacity = 1;

			var fade_type = "puff";
			top_elm.css({'top':0,'left':bs_W,'width':bs_W,'height':bs_H});
			in_type = move_type_name[Math.floor(Math.random() * move_type_name.length)];

			//puffの出現確率、0-8はpuff、それ以上はcrossfadeになります
			no = Math.floor(Math.random() * 12);//10
			if (no > 8) {no = 9;fade_type = "crossfade";in_type = "in";}

			//TEXT
			set_text(fade_type + " No. " + no);

			var s_p_y = 0,s_p_x = 0,s_W = bs_W,s_H = bs_H,e_p_y = 0,e_p_x = 0,e_W = bs_W,e_H = bs_H;
			//FadeTime
			var fade_time = Math.floor(speed * 1.25);
			//rate
			var scale_rate = 1.35;
			//puff
			if (fade_type == 'puff') {
				var scaleW = Math.round(bs_W * (scale_rate - 1));
				var scaleH = Math.round(bs_H * (scale_rate - 1));
				s_p_y = Math.floor(scaleH * puff_type_y[no]) * -1;
				s_p_x = Math.floor(scaleW * puff_type_x[no]) * -1;
				s_W = Math.ceil(bs_W * scale_rate) + 2;
				s_H = Math.ceil(bs_H * scale_rate) + 2;
				e_p_y = 0;
				e_p_x = 0;
				e_W = bs_W;
				e_H = bs_H;
			}
			if (fade_type != 'puff') {
				fade_time = speed;
			}

			//IN
			if (in_type == 'in') {
				//opacity
				start_opacity = 0;
				end_opacity = 1;
				//TOPelm
				top_elm.css({'top':s_p_y,'left':s_p_x,'width':s_W,'height':s_H});
				top_elm.children("img").empty().attr({src:img_url});
				top_elm.css({'display':'block'});
				//アニメ
				top_elm.css({'opacity':start_opacity}).animate({'top':e_p_y,'left':e_p_x,'width':bs_W,'height':bs_H,'opacity':end_opacity},fade_time,function() {
					imgholder_elm.children("img").empty().attr({'src':img_url});
					top_elm.css({'top':0,'left':bs_W,'display':'none'});
					trans_image_parts();
				});
			}
			//OUT
			if (in_type == 'out') {
				//opacity
				start_opacity = 1;
				end_opacity = 0;//0.01
				//TOPelm
				top_elm.css({'top':e_p_y,'left':e_p_x,'width':bs_W,'height':bs_H});
				top_elm.children("img").empty().attr({src:keep_url});
				top_elm.css({'display':'block'});
				//
				imgholder_elm.children("img").empty().attr({'src':img_url});
				//アニメ
				top_elm.css({'opacity':start_opacity}).animate({'top':s_p_y,'left':s_p_x,'width':s_W,'height':s_H,'opacity':end_opacity},fade_time,function() {
					top_elm.css({'top':0,'left':bs_W,'display':'none'});
					trans_image_parts();
				});
			}
		}

		//トランジッション処理表示スライドのみ
		var move_image = function () {

			anime_move = 'move';
			fade_set = "";

			//IN OUTの決定
			in_type = move_type_name[Math.floor(Math.random() * move_type_name.length)];
			//ランダムにトランジッションの番号抽出
			no = Math.floor(Math.random() * 4);
			if (no > 4) {no = 0;}

			//TEXT
			set_text("slide No. " + no);

			//speed
			var slide_time=Math.floor(speed * 0.75);

			//IN
			if (in_type == 'in') {

				//上画像TOPelm
				top_elm.css({'top':start_pos_y[no],'left':start_pos_x[no],'width':bs_W,'height':bs_H,'display':'none'});
				top_elm.children("img").empty().attr({src:img_url});
				top_elm.css({'display':'block'});
				//
				top_elm.animate({'top':end_pos_y[no],'left':end_pos_x[no]},slide_time,function() {
					//下画像に新しいURLセット
					imgholder_elm.children("img").empty().attr({'src':img_url});
					//上画像非表示、ずらす
					top_elm.css({'left':bs_W,'top':0,'display':'none'});
					//終了処理に進む
					trans_image_parts();

				});
			}
			//OUT
			if (in_type == 'out') {

				//上画像TOPelm/Firefoxここの処理が遅い
				top_elm.children("img").empty().attr({src:keep_url});
				top_elm.css({'top':end_pos_y[no],'left':end_pos_x[no],'width':bs_W,'height':bs_H,'display':'none'});
				top_elm.css({'display':'block'});
				//
				imgholder_elm.children("img").empty().attr({'src':img_url});
				//
				top_elm.animate({'top':start_pos_y[no],'left':start_pos_x[no]},slide_time,function() {
					//上画像非表示、ずらす
					top_elm.css({'left':bs_W,'top':0,'display':'none'});
					//終了処理に進む
					trans_image_parts();

				});

			}
		}

		//end-anime 終了処理
		function trans_image_parts() {

			anime_move = '';
			//fadeの場合opacity戻す
			if (fade_set=='fade') {
				top_elm.css({'opacity':1});
				//support.opacity判定/filterの除去
				if (!support_op) {top_elm.css({'filter':'none'});}
			}

			//Firefox対策/画像BOXの大きさを戻す
			top_elm.css({'width':bs_W,'height':bs_H});

			//keep-url
			keep_url=img_url;
			//cycle-time
			setTimeout(nextImage,cycle_time);

		};

		//NEXT
		function nextImage() {
			//カウントアップ
			count++;
			if (count > list_len-1) {count = 0;}
			//imgタグに入れる、URL取得
			img_url = path+img_urls[count];
			imgload ();
		}

		//imgPreloader
		var imgload = function() {
			//loading
			loading.css({'display':'block'});
			//set-imgPreloader
			imgPreloader = new Image();
			//onload
			imgPreloader.onload = function() {
				//loading
				loading.css({'display':'none'});
				//TRANSITION振り分に進む
				set_view_images ();
			}
			//url
			imgPreloader.src = img_url;
		}

		//set-text
		function set_text(text) {
			if (text_use == 'use') {
				$('#view_text').text(text);
			}
		}

		//init start
		init();

	});

})(jQuery);

Loading画像 31x31



CSS pops-transitionphoto03.css


/* pops-transitionphoto03.css 日本語*/

#pops_transition_photo {
	display:block;
	position:relative;
	width:640px;
	height:200px;
	background-color:#000000;
}
#pops_transition_photo #transit_box {
	display:block;
	position:absolute;
	top:0;left:0;
	width:640px;
	height:200px;
	background-color:#000000;
	overflow:hidden;
}

#transit_box #t_imgholder {
	display:block;
	position:absolute;
	top:0;left:0;
	width:640px;
	height:200px;
	padding:0;
	margin:0;
	border-style:none;
	background-color:#000000;
}
#transit_box #t_imgholder img {
	padding:0;
	margin:0;
	border-style:none;
	text-decoration:none;
}

#transit_box #top_base {
	display:block;
	position:absolute;
	top:0;left:0;
	overflow:hidden;
}
#transit_box #top_base img {
	width:100%;
	height:100%;
	border-style:none;
}

#transit_box #t_loading {
	display: block;
	position:absolute;
	top:0;left:0;
	border:0;
	background: url("/main/images/loading.gif") no-repeat center center;
	background-color: none;/*Safari*/
}
#transit_box #view_text {
	display:block;
	position:absolute;
	top:5px;left:5px;
	width:80%;
	height:20px;
	color:#FF0000;
}

以上です。



[ この記事のURL ]


タグ:jquery , Transition , photo , series

[ 簡易TRANSITION-PHOTO シリーズ記事 ]

簡易TRANSITION-PHOTO/42012.03.09
簡易TRANSITION-PHOTO/32012.03.08
簡易TRANSITION-PHOTO/22012.03.07
簡易TRANSITION-PHOTO/12012.03.06

 

ブログ記事一覧

年別アーカイブ一覧



[1]