Javascript jQuery";窗帘“;函数最优解?
我想达到类似的“窗帘”效果,因为他们对 我写了一个脚本,效果很好,这是我的。函数如下所示:Javascript jQuery";窗帘“;函数最优解?,javascript,jquery,Javascript,Jquery,我想达到类似的“窗帘”效果,因为他们对 我写了一个脚本,效果很好,这是我的。函数如下所示: function curtain() { var windowHeight = $( window ).height(); var scrollPosition = $( document ).scrollTop(); var value = - ( windowHeight - 70 ); var mainHeight = $( "#main" ).height();
function curtain() {
var windowHeight = $( window ).height();
var scrollPosition = $( document ).scrollTop();
var value = - ( windowHeight - 70 );
var mainHeight = $( "#main" ).height();
var bodyHeight = windowHeight + mainHeight;
if (windowHeight - scrollPosition <= 70) {
$( "#curtain" ).css({position: "fixed", top: value});
$( "#main" ).css({position: "static", marginTop: windowHeight});
$( 'body' ).height(mainHeight);
}
else {
$( "#curtain" ).css({position: "static", height: windowHeight});
$( "#main" ).css({position: "fixed", top: value, marginTop: windowHeight});
$( 'body' ).height(bodyHeight);
}
}
$( document ).ready(curtain);
$( window ).resize(curtain);
$( window ).scroll(curtain);
功能窗帘(){
var windowHeight=$(window.height();
var scrollPosition=$(document.scrollTop();
var值=-(窗高-70);
var mainHeight=$(“#main”).height();
var车身高度=窗高+主高度;
如果(windowHeight-scrollPosition)您可以使用setTimeout
来限制事件处理程序
window.curtainTimeoutId = null;
function curtain() {
window.clearTimeout(curtainTimeoutId);
window.curtainTimeoutId = setTimeout(function () {
// ...
}, 10);
}
另外,如果您使用的是underline.js,您可以使用它的throttle
方法更简洁地实现相同的效果。谢谢!不过有一个小问题:窗帘div没有100%的窗口高度,它只有在滚动后才能延伸到整个窗口。您可以通过按小提琴上的Run按钮来尝试。我已经更新了我的Fiddle,所以唯一的区别是节流位。请再看一看。此外,您可以在jquery中使用此插件进行节流/去Bouncing,而无需下划线。