こんにちは、アライドアーキテクツ長野です。
iPhone向けのWEBアプリを作っていると、滑らかに画面の切り替えがしたくなりますよね!
でもそのためにわざわざライブラリを使いたくない、、ということはよくあると思います。
そこでJavascriptとCSS3だけで滑らかな画面の切り替えをする方法を調べましたので、今回はそれについて書いてみます。
いきなりですが、サンプルです。(iPhoneでみてください)
ボタンを押すと徐々に次のページに切り替わります。
以下にJavascriptのソースを抜粋しました。HTML部分などはサンプルのソースをご覧ください。
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						  function onLoad(){     //事前処理・・・①     document.getElementById("second").setAttribute("style", "opacity:0;z-index:0");   }   function moveScene(){     //アニメーション処理・・・②     document.getElementById("first").setAttribute('style', '-webkit-transition: opacity .5s ease-in-out;opacity:0');     document.getElementById("second").setAttribute('style', '-webkit-transition: opacity .5s ease-in-out;opacity:1;z-index:1');   }  | 
					
アニメーションに関わる部分のみ解説します。
事前処理(①)
| 
					 1  | 
						    document.getElementById("second").setAttribute("style", "opacity:0;z-index:0");  | 
					
切り替え後のページの透明度を0にしておきます。
アニメーション処理(②)
| 
					 1 2  | 
						    document.getElementById("first").setAttribute('style', '-webkit-transition: opacity .5s ease-in-out;opacity:0');     document.getElementById("second").setAttribute('style', '-webkit-transition: opacity .5s ease-in-out;opacity:1;z-index:1');  | 
					
ここで実際にアニメーションをしています。
”-webkit-transition: opacity .5s ease-in-out”
というスタイルをセットしていますが、
これは
・どれくらい時間を掛けるか
・何を対象にするか
・どのような進行割合でアニメーションするか
を定義しています。事前にCSSに書いておくこともできます。
ここでは0.5秒の間に透過度を’ease-in-out'(ゆっくりはじまり、ゆっくり終わる)の進行割合で遷移するよう定義しています。ほかにもlinear等が使えます。
そしてその直後で
“opacity:0”
とセットしており、先にセットされた-webkit-transitionの定義にそってopacityが0になります。
このアニメーションを
・firstは徐々に透過させる
・secondは徐々に表示させる
ことで滑らかに切り替わっているように見せています。
—
今回は透過による遷移ですが、画面を横にずらす遷移などもできそうですね。
サービス開発や社内インフラ等を担当しています。 このブログではJavaScript周りのネタを中心に書いていきたいです。
                
            


        