0

我试图让一个子菜单在滚动时停留在页面顶部,一旦它在滚动过程中到达顶部。这是我到目前为止所拥有的:

$(window).scroll(function () {    
  if ($(window).scrollTop() > 175) {
$('#location_menu').css('position', 'fixed').css('top','0px').css('z-index','1000');
$('.first').css('padding-top','415');}
  else { 
$('#location_menu').css('position', 'relative').css('z-index','1');
 }});

我遇到的问题是滚动不平滑,一旦元素从位置更改:相对位置:固定,内容似乎会向上跳跃/跳过大约 415 像素,这与子菜单的高度相同。

这是CSS:

 <div id="location_menu" >submenu content
 </div>

 <div id="content" class="location_detail first">content beneath submenu
 </div>

.first当页面滚动并到达页面顶部的 175px 范围内时,我添加了415px 的 padding-top 行,但这.css('padding-top','415')实际上似乎并没有做任何事情。没有变化,所以我认为我执行不正确。

我应该使用上面列出的不同的滚动功能吗?





根据@Danko 的代码,这是我最终用来解决问题的方法:

$(window).scroll(function () {
  var $conten = $('.first'),
      $menu = $('#location_menu')
      scrollpos = $(window).scrollTop();
  if (scrollpos >= 175) {
      $conten.css('padding-top','365px');
      $menu.css('position', 'fixed').css('top','0px').css('z-index','1000');
  } else {
      $conten.css('padding-top','0');
      $menu.css('position', 'fixed').css('position', 'relative').css('z-index','1');
  }
});
4

1 回答 1

1

编辑

好的,既然我理解了这个问题,我做了这个演示http://codepen.io/anon/pen/BdkLf

函数其实是这样的:

$(window).scroll(function () {
  var $menu = $('#location_menu'),
      $conten = $('#content'),
      scrollpos = $(window).scrollTop();
  if (scrollpos >= 175) {
      $menu.css( {
        "top" : "0",
        "position": "fixed",
      });
      $conten.css('top','375px' );
  } else {
      $menu.css( {
        "position": "relative",
        "top" : "175px",
      });
      $conten.css('top','175px');
  }
});

这里175等于到顶部的初始距离,是距离和菜单375的距离之间的加法height

于 2013-10-24T19:21:19.230 回答