(20-F)クリックで目的のコンテンツに移動するスクリプトを作成する - WEBデザインアイデアラボVol.20 | デザインってオモシロイ -MdN Design Interactive-

(20-F)クリックで目的のコンテンツに移動するスクリプトを作成する - WEBデザインアイデアラボVol.20

2024.4.24 WED

【サイトリニューアル!】新サイトはこちらMdNについて




CREATIVE POINT F

クリックで目的のコンテンツに移動するスクリプトを作成する


KEY WORD 1

気持ちのよいスピードを探す

KEY WORD 2

bodyに「overflow: hidden;」を設定する



Dreamweaverの挿入メニュー→“レイアウトオブジェクト”→“AP Div”で、絶対座標で配置するdiv要素を作成し、プロパティパネルで「mainBox」と名前をつける。この中に作成してきた画像を配置する【1】。Dreamweaverでは表示の拡大・縮小もできるので、表示メニュー→“ドキュメント全体”でデザインの全体像を確認できる。

div要素「mainBox」のコードの部分で「<div id="mainBox" style="left:-1100px; top:-200px;">」と記述し、左を-1100px、上を-200pxの位置で表示してみる【2】。少しずつ位置を変えながら、この数値を探し出す。同様に左が-350px、上が-860pxの位置【3】、左が-30px、上が-70pxの位置【4】で表示して、ぞれぞれ3つの画面を表示するためには、div要素「mainBox」をどの座標にすればよいのかを確かめる。確かめたら「<div id="mainBox" style="left:0px; top:0px;">」に修正して、左も上も0pxの位置に表示しておく。クリックすると、この3つの画面を移動していくようにしたいのだが、ここでは一枚の画像として配置してしまっているので、プロパティパネルのホットスポットツールでマップを作成する【5】【6】。

目的の座標まで減速しながら動くファンクション「boxMove()」と、目的の座標を指定するファンクション「setTarget(x,y)」を記述し【7】、マップの指定の「Music」の画面へ移動するボタンには「onclick="setTarget(-350,-860)"」、ムービーの画面に移動するボタンには「onclick="setTarget(-30,-70)"」、トップへ戻るボタンには「onclick="setTarget(-1100,-200)"」を書き加える【8】。そして、body要素に「onload="boxMove()"」を書き加えてスクリプトを起動すると、ボタンのクリックで滑らかに移動するようになる【9】。移動するスピードは、変数「speed」で指定できる。数値を大きくするほど遅くなる。気持ちのよい動きになるように、数値を変えて試してみるとよい。あまり早すぎないほうが動きを意識できてよいだろう。しかし、この状態では、スクロールバーが表示されてしまっているので、body要素にCSSで「overflow: hidden;」を設定して、スクロールバーを表示させないようにする【10】【11】【12】。

f01
【1】div要素「mainBox」の中に作成した画像を配置する

f02
【2】トップの画面を表示した場合。この状態でのdiv要素「mainBox」の座標を覚えておく

f03
【3】「Music」の画面を表示した場合。この状態においてのdiv要素「mainBox」の座標を覚えておく

f04
【4】「Movie」の画面を表示した場合。この状態においてのdiv要素「mainBox」の座標を覚えておく

f05
【5】プロパティパネルのホットスポットツールでマップを作成する

f06
【6】「Music」、「Movie」の画面でもマップでボタンとして機能する部分を指定する

<script type="text/javascript">
<!--
var myX; //現在のx座標
var myY; //現在のy座標
var targetX = -1100; //移動する目標のx座標
var targetY = -200; //移動する目標のy座標
var speed = 40; //移動する速度
function boxMove() {
//現在の位置を数値で取得
myX = eval(document.getElementById('mainBox').style.left.replace("px", ""));
myY = eval(document.getElementById('mainBox').style.top.replace("px", ""));
//一回に動く位置を計算
myX +=(targetX-myX) / speed;
myY +=(targetY-myY) / speed;
//新しい位置を設定
document.getElementById('mainBox').style.left = myX + "px";
document.getElementById('mainBox').style.top = myY + "px";
//ループ処理
setTimeout("boxMove()",10);
}
function setTarget(x,y) {
//移動する座標の設定
targetX = x;
targetY = y;
}
//-->
</script>
【7】「mainBox」を動かす「boxMove()」、移動する座標を設定する「setTarget()」のふたつのファンクションを記述する

<map name="Map" id="Map">
<area shape="rect" coords="1580,380,2020,535" href="#" alt="ミュージックへ" onclick="setTarget(-350,-860)"/>
<area shape="rect" coords="1580,580,2020,735" href="#" alt="ムービーへ" onclick="setTarget(-30,-70)"/>
<area shape="circle" coords="1087,1392,16" href="#" alt="ムービーへ" onclick="setTarget(-30,-70)"/>
<area shape="circle" coords="603,719,16" href="#" alt="トップにもどる" onclick="setTarget(-1100,-200)"/>
</map>
【8】作成されたマップの設定。areaごとに「onclick="setTarget (座標)"」を書き入れる

f09
【9】クリックすると、滑らかに次の画面に移動する

f10

f11

 f12
【10】【11】【12】動きの調整が終われば、スクロールでWebページ内を移動するインターフェイスデザインの完成だ
twitter facebook このエントリーをはてなブックマークに追加 RSS
【サイトリニューアル!】新サイトはこちらMdNについて

この連載のすべての記事

アクセスランキング

8.30-9.5

MdN BOOKS|デザインの本

Pick upコンテンツ

現在