Tejsが提案しているものと非常によく似たアプローチは、ハッシュの変更をリッスンするハッシュベースのルーティングフレームワークを使用することです。2つの異なる場所でスクロールを定義する必要がないため、コードがよりクリーンになります。
ページ内のすべてのリンクは現在、jQueryイベントリスナーによって監視されています(クリック->コンテンツコンテナを移動して目的のコンテンツを表示します)。HTMLはおそらく次のようになります<a href="#">Contact details</a>
。
このアプローチでは、これらのリンクを監視する必要はありません。代わりに、ハッシュを変更させるだけです<a href="#page2">Contact details</a>
。
次に、ハッシュを観察し、変更に対応します。Simrouフレームワーク(https://github.com/buero-fuer-ideen/Simrou)を使用していますが、同様の機能を提供する他のフレームワークを使用できます。
jQuery(document).ready(function() {
// Define a function that moves the content, e.g. moveContent(3300);
function moveContent(pixelPosition) {
$('#site-content').css('left', '-' + pixelPosition + 'px');
}
// Setup the router
var router = new Simrou({
'page1': function() { moveContent(0); },
'page2': function() { moveContent(1100); },
'page3': function() { moveContent(2200); },
'page4': function() { moveContent(3300); }
});
router.start();
});
必要なJavaScriptはこれだけです。
(そして、ここに素早く汚いフィドルがあり、全体を示しています:http: //jsfiddle.net/R7F6r/)