JavaScriptで画面遷移なしのナビゲーション
DATE:05-12-26 Category:Web
Webという媒体は技術の構造上、画面上の情報を切り替えるには一度ブラウザの表示をリセットしなくてはなりません。
当然、次の画面が表示されるまでに待ち時間が発生するわけです。
それを解決するために、最近はAjaxという技術が注目されています。
Ajaxほど大げさな事をしなくても、画面の切り替えなしに予め用意された画面を切り替える程度であれば、JavaScriptとcssだけで簡単に実現できたりします。
そこで、簡単なタブ風ボックスを作ってみました。
3つの記事をタブをクリックする事によって、画面の遷移なしで切り替える事ができます。
JavaScriptもcssもすべてhtml内に記述していますので、興味のある方はソースを見てみてください。
ただ、JavaScriptの知識はかなり怪しいので、もっと効率のいい書き方があると思います。ご了承ください。
一応簡単に解説しちゃいます。
まず、3つの要素にそれぞれ、content01,content02,content03というIDを付けます。
これは、JavaScriptで表示・非表示を切り替える為の識別子になります。
同じようにそれぞれのタブにもIDが振ってあります。
つぎにJavaScriptでcontent01以外をdisplay:none;にします。以下の記述です。
function ini() { document.getElementById("content01").style.display = "block";
〜省略〜
document.getElementById("b01").style.backgroundColor = "#34A9E6";backgroundColor = "#34A9E6";の部分は、ボタンの色を変えています。
で、以下の関数が表示・非表示の切り替えと、ボタンの色替えを行う関数です。
function btn(sel,btn) {
//表示をリセット
document.getElementById("content01").style.display = "none";
〜省略〜
//ボタンの色をリセット
document.getElementById("b01").style.backgroundColor = "#EE9247";
〜省略〜
//クリックされたボタンに対応したブロックを表示
document.getElementById(sel).style.display = "block";
//ボタンの色を変更
document.getElementById(btn).style.backgroundColor = "#34A9E6";
}一度すべてを非表示にして、クリックされたものだけ表示させるって感じです。
aタグで関数btnに引数を渡しています。
<a href="javascript:btn('content01','b01');" >一つ目の引数で、表示されるコンテンツのIDを。二つ目で色を変えるボタンのIDを指定しています。
一度表示させた要素をJavaScriptで非表示にしていますので、JavaScriptを切っている方は最初からすべてが表示されます。
かなり単純なサンプルですが、JavaScriptは簡単にcssにアクセスできますので、かなり動的な表現の幅が広がると思います。
また、ここからcss上の記述とJavaScript上の記述の相互表が見れます。
trackback
このブログ記事に対するトラックバックURL:
http://s-bot.net/MT/mt-tb.cgi/96

Comment 5
伊久 |08-01-11
タブ風のJavaScriptを探していてたどり着きました。他のところで見つけたコードよりもシンプルなのに理想通りでしたので参考にさせて頂きました。
諸事情でURLは記載できませんが、ありがとうございました。
i-Daisuke |08-01-11
>伊久さん
わざわざありがとうございます。
ご参考になったようで、嬉しいです。
今後ともよろしくお願いします。
T.T-Four |11-08-26
うおお素晴らしい!
画面遷移の際に切り換えなしでやるにはAjaxしかないかと思ってたので本当に助かりました。
ありがたく使わせて貰います。
ちなみにEclipseとTomcatでMVCモドキのDB関連のアプリを初心者なりに作っているところです。
ただ公開出来るほどの物ではないのですみませんがお見せできないかも・・・(汗
てすと |11-09-02
ありがとうございます。いい参考になります。
payday loans ontario MAIL WEB|12-01-12
うわーそれは珍しいものだった。私は非常に長いコメントを書いたが、私は私のコメントの提出をクリック後に表示されませんでした。気まぐれ...よく私は何度も繰り返し、すべてのことを書いていないよ。とにかく、ちょうど素晴らしいブログを言いたかった!
コメントする(アルファベットのみのコメントは投稿できません。)