時間差で見せたい情報を見せるのに、時にはFLASHよりも効果的なのがJavaScriptを使った開閉インターフェイス。ソースが落ちているので、使うのはそのまま。流れだけ見ていきたいと思います。

Step1 div要素を用意
・マージンを0に。
・わかりやすいID名をつける。
<div id="title" style="height:200px"></div>
<div id="boxA" style="height:15px"></div>
<div id="boxB" style="height:15px"></div>
<div id="boxC" style="height:15px"></div>
<div id="boxD" style="height:15px"></div>

Step2 div要素に色をつける。
<style type="text/css">
<!--
カラーの設定
-->
</style>

Step3 動きのエンジンとなるスクリプトを書く
・getElementByldでIDを指定して数値を変更。
・onclickでクリック時にファンクションを呼び出す。

~~~~~~~~~~~~~JavaScript Tag~~~~~~~~~~~~~
<script type="text/javascript">
<!--
function boxResize(id, targetNum) {

 var speed = 8;  //スピード
 var id;         //動かすid
 var targetNum;  //目標とする数値
 var currentNum; //現在の数値
 var newNum;     //新しく設定する数値
 
 //現在の数値を取得
 currentNum = eval(document.getElementById(id).style.height.replace("px", ""));
 
 //新しい数値の計算
 newNum = currentNum + (targetNum - currentNum) / speed;

 //新しいサイズを設定
 document.getElementById(id).style.height = newNum + "px";
 
 //ループ処理
 if (currentNum > targetNum*0.95){
  document.getElementById(id).style.height = targetNum + "px";
 }else{
  setTimeout("boxResize(\'"+id+"\',"+targetNum+")", 10);
 }
}
~~~~~~~~~~~Step1で記述したdiv要素に指定~~~~~~~~~~~
<div id="boxA" onClick="boxResize" ('boxA',300)" style="height:15px;"></div>
<div id="boxB" onClick="boxResize" ('boxB',300)" style="height:15px;"></div>
<div id="boxC" onClick="boxResize" ('boxC',300)" style="height:15px;"></div>
<div id="boxD" onClick="boxResize" ('boxD',300)" style="height:15px;"></div>

Step4 開閉するスクリプトを完成させる
・上記のboxResize()を呼び出す為のdivごとのファンクションを用意。
・それぞれのボックスに開いた状態のheight:300;を設定。それ以外の閉じている状態は15pxで。
・ファンクション名「on○
・function allClose()で全て閉じた状態の15pxに。

function onA() {
 boxResize('title', 150);
 boxResize('boxA', 300);
 boxResize('boxB', 15);
 boxResize('boxC', 15);
 boxResize('boxD', 15);
}
function onB() {
 boxResize('title', 200);
 boxResize('boxA', 15);
 boxResize('boxB', 300);
 boxResize('boxC', 15);
 boxResize('boxD', 15);
}
function onC() {
 boxResize('title', 300);
 boxResize('boxA', 15);
 boxResize('boxB', 15);
 boxResize('boxC', 200);
 boxResize('boxD', 15);
}
function onD() {
 boxResize('title', 100);
 boxResize('boxA', 15);
 boxResize('boxB', 15);
 boxResize('boxC', 15);
 boxResize('boxD', 300);
}
function allClose() {
 boxResize('title', 200);
 boxResize('boxA', 15);
 boxResize('boxB', 15);
 boxResize('boxC', 15);
 boxResize('boxD', 15);
}
//-->
</script>

トラックバック(0)

このブログ記事を参照しているブログ一覧: 開閉インターフェイスデザイン

このブログ記事に対するトラックバックURL: http://www.web-mora.co.jp/admin/mt-tb.cgi/128

コメントする