3

我是 jquery 的新手,并希望在我向下滚动浏览器中的特定位置后向上滚动并修复顶部,就像http://www.airbnb.com/jobs/

4

4 回答 4

5

试试下面的DEMO

这与我的其他答案(答案)相同,只是更改了一些值。原生 JS 解决方案。

代码是:

JS:

window.onscroll=function () {
var top = window.pageXOffset ? window.pageXOffset : document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
var head = document.getElementById("header")
if(top > 550){
    head.style.position = "fixed";
    head.style.height="50px"
    head.style.top="0px"
    }
    else {
if(head.getAttribute("style"))
 head.removeAttribute("style")                
    }
}

HTML:

<div class="container">
  <div id="header" class="header">
    Hello World
  </div>
</div>

CSS:

.container{
 height:2000px;
 width:100%;
 background-color:yellow;
}

.header{
 text-align:center;
 background-color:red;
 height:100px;
 position:relative;
 min-height:50px;
 width:100%;
 top:500px;
}

​</p>

希望能帮助到你

于 2012-07-24T09:26:36.277 回答
4

像这样写:

$(window).scroll(function () {
                    var height = $('body').height();
                    var scrollTop = $(window).scrollTop();

                      if(scrollTop>500){
                          $('#header').css({ 'position': 'fixed', 'top' : '0' });
                    }
                      else{
                         $('#header').css({ 'position': 'relative', 'top': '500px'});
                       }
                });

检查这个http://jsfiddle.net/68eXM/14/

于 2012-07-24T10:04:14.607 回答
2

小提琴演示:http: //jsfiddle.net/collabcoders/PZp8R/3/

扩展它以包含 jquery 动画,您将需要包含 jquery、jquery.effects.core.min.js、jquery.effects.slide.min.js 和 jquery.effects.transfer.min.js 文件。

在您的 CSS 中,您需要将 div 的上边距设置为负数,这将是动画的起点。

CSS

.tophead {  
    width:100%;
    height: 100px;
    color:#fff;
    background-color:#111;
}

.container {
    height:2000px;
    width:100%;
    margin-top:-100px;
}

.header{
    text-align:center;
    background-color:#000;
    height:100px;
    position:relative;
    min-height:100px;
    width:100%;
    top:500px;
    color: #fff;
}​

在您的 javascript 中,这将在 3 秒内将整个 div 从 -100 px 变为 0

Javascript

$(document).ready(function () {
    $(".container").animate({
         marginTop: "0"
    },2000);
});

$(window).scroll(function () {
    var height = $('body').height();
    var scrollTop = $(window).scrollTop();
    if(scrollTop>500){
         $('#header').css({ 'position': 'fixed', 'top' : '0' });
    } else {
         $('#header').css({ 'position': 'relative', 'top': '500px'});
   }
});

HTML

<div class="container">
    <div id="tophead" class="tophead">
      Sliding Down Container
    </div>
  <div id="header" class="header">
    Hello World
  </div>
</div>​
于 2012-07-24T09:44:52.743 回答
0

这很简单..就像这个例子:

$(window).scroll(function () {
    var height = $('body').height();
    var scrollTop = $(window).scrollTop();
    if(scrollTop>100){
        $('#header').css({ 'position': 'fixed', 'top' : '0', 'opacity': '0.7'});
    } else {
         $('#header').css({ 'position': 'relative', 'top': '100px', 'opacity': '1'});
    }
});

http://jsfiddle.net/PZp8R/55/

于 2014-05-07T08:33:57.647 回答