Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery";窗帘“;函数最优解?_Javascript_Jquery - Fatal编程技术网

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,而无需下划线。