jQuery scrollTo を使用してセクション間を移動するマルチセクション スプラッシュ ページを作成しています。scrollTo の「オフセット」設定が考慮される固定ヘッダーがありますが、ユーザーがサイトの他のページから特定のセクション (スプラッシュ ページのアンカー) に移動できるようにしたいと考えています。
現状では、これが発生したときにオフセットは考慮されていません...セクションと #page および body 要素の両方にマージンを追加しようとしましたが、いくつかの相対的な位置をあちこちに追加しようとしましたが、セクションは常にブラウザ ウィンドウの上部。
私が気に入っているのは、他のページからのリンクでオフセットを考慮に入れるか、それらのリンクでユーザーをスプラッシュページの上部に移動させてから、目的のアンカーまでスクロールダウンさせる方法です。
js:
//menu scrolling
jQuery('#menu-primary').localScroll({
easing: 'easeInOutQuint',
duration: 1200,
offset: -63,
hash: true
}); // end scroll
// active states for menu items
$(function(){
var sections = {},
_height = $(window).height(),
i = 0;
$('.section').each(function(){
sections[this.name] = $(this).offset().top;
});
$(document).scroll(function(){
var $this = $(this),
pos = $this.scrollTop();
for(i in sections){
if(sections[i] > pos && sections[i] < pos + _height){
$('li').removeClass('active');
$('.nav-' + i).addClass('active');
}
}
});
});
html:
<div class="menu-primary-container">
<ul id="menu-primary" class="menu">
<li id="menu-item-21" class="nav-section1 active"><a href="/#section1">Home</a></li>
<li id="menu-item-13" class="nav-section2"><a href="/#section2">two</a></li>
<li id="menu-item-12" class="nav-section3"><a href="/#section3">three</a></li>
<li id="menu-item-14" class="nav-section4"><a href="/#section4">four</a></li>
<li id="menu-item-19"><a href="http://galvanizingequity.com/?page_id=17">other page</a></li>
</ul>
</div>
<div id="scrollwrap">
<div class="scrollbox one">
<a name="section1" class="section"></a>
<h2>Apples</h2>
</div>
<div class="scrollbox two">
<a name="section2" class="section"></a>
<h2>Bananas</h2>
</div>
<div class="scrollbox three">
<a name="section3" class="section"></a>
<h2>Toast</h2>
</div>
<div class="scrollbox four">
<a name="section4" class="section"></a>
<h2>Papaya</h2>
</div>
</div><!--scrollwrap-->
(これは、メニューのカスタム コーディングに関する限り、余分な障害を追加するワードプレス サイトです。)
入力をお待ちしております。ありがとう!