2014-10-28 61 views
0

我想將var num更改爲百分比而不是像素數。 我該怎麼做?基於滾動百分比的jQuery切換元素類

我需要爲我的網站: http://www.sutanaryan.com/Tutorials/fixed-menu-when-scrolling-page-with-CSS-and-jQuery/ 但他們與像素的工作,我的網站可與%(因爲自動縮放例如高清屏或全高清屏幕上)

/*動態頂部菜單定位 * */

var num = 150 ; //number of pixels before modifying styles 150 


$(window).bind('scroll', function() { 
    if ($(window).scrollTop() > num) { 
     $('.menu').addClass('fixed'); 
    } else { 
     $('.menu').removeClass('fixed'); 
    } 
}); 

//USE SCROLL WHEEL FOR THIS FIDDLE DEMO 
+1

取決於如果你的num是寬度和高度,你可以做NUM/screen.width * 100或num/screen.height * 100 – brso05 2014-10-28 14:04:05

+3

什麼的百分比? – 2014-10-28 14:04:30

+1

「$(window).scrollTop()> num」然後你會比較像素和百分比,這有點奇怪 – 2014-10-28 14:06:09

回答

1

首先,讓我告訴你,這是一個可怕的解決方案。監聽每個滾動事件並每次調用addClass()或removeClass()都很昂貴。 //結束宣講

這裏的回答你的問題呢:

var baseHeight = $(window).height(); // for body, use $("body").height(); 
var num = .25; // this the percentage of vertical scroll 

$(window).bind('scroll', function() { 
    if ($(window).scrollTop()/baseHeight > num) { 
     $('.menu').addClass('fixed'); 
    } else { 
     $('.menu').removeClass('fixed'); 
    } 
}); 
+0

謝謝,這是有效的。 – Nboy 2014-10-28 14:35:10

+0

也許你有更好的方法嗎? – Nboy 2014-10-28 14:35:49

+0

有幾種方法可以優化/改進您的腳本,具體取決於您要查找的表演類型。至少你應該在添加或刪除類之前檢查'hasClass('fixed')'。緩存'$('。menu')'對象。也許使用'setTimeout()'來限制對這個事物的調用。並在您處於封裝狀態時將回調封裝爲命名函數。 – 2014-10-28 14:58:50