これを行うにはさまざまな方法があります。
- フレーム
- それぞれが共通のナビゲーションセグメントを含む個別のページ
- 複数の仮想ページを含む単一のページ
オプション1と2は自明です。2 over 1の利点は、ブックマークとブラウザの履歴が素晴らしくシンプルなことです。現在、多くの人々が3に向かって進んでいます。
これがオプション3の例としてまとめた簡単なJSFiddleです。醜いです、はい、私は何もスタイリングしませんでした。
http://jsfiddle.net/sJ6Bj/4/
HTMLは次のとおりです。
<html>
<head>
<title>Two-pane navigation</title>
</head>
<body>
<div id="content">
<div id="navigation">
<h1>Navigation</h1>
<ul>
<li><a href="#page1" class="page-link">Page 1</a></li>
<li><a href="#page2" class="page-link">Page 2</a></li>
</ul>
</div>
<div id="pages">
<div id="page1" class="page">
<h1>Page 1</h1>
<p>This is all the lovely content on page 1.</p>
<p>Let's add a bunch of stuff to make it scroll.</p>
<p style="font-size: 72px">.<br/>.<br/>.<br/>.<br/>.<br/>.</p>
<p>This is at the bottom of the page.</p>
</div>
<div id="page2" class="page">
<h1>Page 2</h1>
<p>This is all the lovely content on page 2.</p>
</div>
</div>
</div>
</body>
</html>
JavaScript(JQueryがロードされていることを前提としています):
$(document).ready(function() {
$(".page-link").on("click", function(e) {
$(".page").fadeOut(250);
setTimeout(function() { $($(e.currentTarget).attr("href")).fadeIn(250); }, 250);
});
});
CSS:
#navigation {
position: fixed;
width: 250px;
height: 100%;
border-right: 1px solid black;
}
#pages {
margin-left: 270px; /* 250px + 20px of actual margin */
}
.page {
position: relative;
display: none;
overflow: scroll;
}
@RobGが上で述べたように、ブラウザは現在すべてを1ページと見なします。ただし、JQuery BBQのようなものを使用すると、それほど労力をかけずに追加し直すことができます(たとえば、ここを参照)。
フレームよりもdivを選択するのはなぜですか?さまざまな理由があります。
- フレームをブックマークすることはできません(上記の警告を参照)。
- フレームでのトランジションとアニメーションのサポートは非常に制限されており、個別の完全なページでは存在しません。上記のフィドルで簡単なフェードイン/フェードアウトを実行して、divで何が可能かを示しました。
- ユーザーが「ページ」を変更したときに何も再ロードする必要はありません(ただし、逆に、前もってさらに多くをロードする必要がある場合があります)。