我使用了一個位置:在http://communitychessclub.com/index.php固定的菜單,以保持屏幕上的菜單,甚至當用戶滾動:jQuery的平滑頁錨轉變與位置:固定的菜單
CSS:
#sticky {margin:0 auto; display:table}
#sticky.stick {position: fixed; top: 0; margin-left:48px; z-index: 10000; }
JS:
<script>
function sticky_relocate() {
var window_top = $(window).scrollTop();
var div_top = $('#sticky-anchor').offset().top;
if (window_top > div_top)
$('#sticky').addClass('stick')
else
$('#sticky').removeClass('stick');
}
$(function() {
$(window).scroll(sticky_relocate);
sticky_relocate();
});
$(window).scroll((function() {
var a='', // a buffer to the hash
w = $(window);
return function() {
var h = location.hash;
// if hash is different from the previous one, which indicates
// the hash changed by user, then scroll the window down
// update the buffer
if (h != a) {
a = h;
w.scrollTop(w.scrollTop()-150)
}
};
})());
</script>
但人們抱怨說,鏈接到同一頁上的ID導致屏幕突然滾動。所以我在http://www.spydertrap.com/blog/2012/08/user-experience-jquery-smooth-page-anchor-transitions/上發現了「通過jQuery平滑頁面錨點轉換提高用戶體驗」,並且很喜歡這個演示。非常喜歡它,我想將下面的jquery代碼與上面的jquery代碼混合起來,形成一個平滑的jquery滾動條。
他們使用(但其他版本的存在這裏...問題是如何加入二)
jQuery代碼:
function goToByScroll(id){
$('html,body').animate({scrollTop: $(id).offset().top},'slow');
}
HTML:
<ul class="nav">
<li><a href="#chapter1">Chapter 1</a></li>
<li><a href="#chapter2">Chapter 2</a></li>
<li><a href="#chapter3">Chapter 3</a></li>
</ul>
JS啓動:
$(document).ready(function(){
$('.nav a').click(function(){
goToByScroll($(this).attr('href'));
return false;
});
});
這可能與上面的jQuery代碼聯合起來嗎?
這很好,但是放置位置的部分:固定菜單--->(w.scrollTop(w.scrollTop() - 150) - >現在不起作用。該部分可以修補到您的代碼中嗎?菜單覆蓋了目標ID,需要提高菜單150px. – verlager
似乎可以正常工作,但是間歇性地進行。主菜單中的第一次點擊將菜單定位在藍色條的正上方,但隨後的點擊將菜單定位在藍色條上方150px。希望這可以修復。 – verlager