2014-10-28 59 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