Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.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
从页面中间加载时,jQuery为固定页眉设置页边距顶部_Jquery_Css_Wordpress - Fatal编程技术网

从页面中间加载时,jQuery为固定页眉设置页边距顶部

从页面中间加载时,jQuery为固定页眉设置页边距顶部,jquery,css,wordpress,Jquery,Css,Wordpress,我有一个易于滚动的标题,它的大小减小了(由于降低了徽标高度),并在主体上设置了页边空白顶部,以说明固定的标题 我的问题是,当我加载页面时,scrollTop()超过页眉高度,页边空白顶部设置得太小,因为我的图像缩小了 css: jquery: jQuery(window).on('load', function(){ marginTop(); function marginTop(){ var header = jQuery('.site-header');

我有一个易于滚动的标题,它的大小减小了(由于降低了徽标高度),并在主体上设置了页边空白顶部,以说明固定的标题

我的问题是,当我加载页面时,scrollTop()超过页眉高度,页边空白顶部设置得太小,因为我的图像缩小了

css:

jquery:

jQuery(window).on('load', function(){

  marginTop();

  function marginTop(){
      var header = jQuery('.site-header');
      var headerHeight = header.height();
      var body = jQuery('body');

      body.css('margin-top', headerHeight);
  }

})
jQuery(window).on('scroll', function(){

  scrolling();

  function scrolling(){
      var header = jQuery('.site-header');
      var headerHeight = header.height();
      var scrollTop = jQuery(window).scrollTop();
      var flag = true;

      if (scrollTop > headerHeight && flag){

          header.addClass('scrolling');
          flag = false;

      } else {

          header.removeClass('scrolling');
          flag = true;
      }
  }
})
开发网站:

编辑:

我意识到,如果滚动超过我的设定值,仅根据徽标高度加载我身体的边距顶部是不起作用的。我也不太想在页眉和正文/任何容器的页边顶部设置静态高度

我试图在scrolling()函数的else端添加一个marginTop()函数的副本,以便在到达页面顶部时将其重置,但结果不准确(可能是由于过渡?)

谢谢,
Matt

我最后添加了另一个函数(reset_marginTop()),不得不使用超时来解释我的转换。我不太想这样做,因为每次滚动到页面顶部时,它都会重置marginTop。但是,如果有人看了,我就用这个:

jQuery(window).on('scroll', function(){

function reset_marginTop(){
    var body = jQuery('body');
    var bodyMargin = parseInt(body.css('margin-top'));
    var header = jQuery('.site-header');
    var headerHeight = parseInt(header.height());

    if (headerHeight > bodyMargin) {
        body.css('margin-top', headerHeight);
    }

}

scrolling();

  function scrolling(){
      var header = jQuery('.site-header');
      var headerHeight = header.height();
      var scrollTop = jQuery(window).scrollTop();
      var flag = true;

      if (scrollTop > headerHeight && flag){

          header.addClass('scrolling');
          flag = false;

      } else {

          header.removeClass('scrolling');
          flag = true;

          setTimeout(reset_marginTop, 200);
      }
  }
})

我不理解你的问题
我希望能流畅地解决这个问题,而不是在页眉上设置实际高度。
我看不到你在页眉上设置高度。你想实现什么?我不想将页眉的高度设置为100px(这样就可以轻松地将页眉的边距设置为100px,这样就可以了)。我希望在没有特别设置的情况下,将页边顶部调整到页眉的高度。
jQuery(window).on('scroll', function(){

function reset_marginTop(){
    var body = jQuery('body');
    var bodyMargin = parseInt(body.css('margin-top'));
    var header = jQuery('.site-header');
    var headerHeight = parseInt(header.height());

    if (headerHeight > bodyMargin) {
        body.css('margin-top', headerHeight);
    }

}

scrolling();

  function scrolling(){
      var header = jQuery('.site-header');
      var headerHeight = header.height();
      var scrollTop = jQuery(window).scrollTop();
      var flag = true;

      if (scrollTop > headerHeight && flag){

          header.addClass('scrolling');
          flag = false;

      } else {

          header.removeClass('scrolling');
          flag = true;

          setTimeout(reset_marginTop, 200);
      }
  }
})