如何让div向上滚动并修复到顶部

时间:2012-07-24 09:10:56

标签: jquery css

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

一样

4 个答案:

答案 0 :(得分:5)

尝试以下DEMO

这与我的其他答案(Answer)的行相同,但更改了一些值。原生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;
}

希望有所帮助

答案 1 :(得分: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/

答案 2 :(得分:2)

FIDDLE DEMO:http://jsfiddle.net/collabcoders/PZp8R/3/

扩展它以包含jquery动画,你需要包括jquery,jquery.effects.core.min.js,jquery.effects.slide.min.js和jquery.effects.transfer.min.js文件。< / p>

在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中,这会将整个div从-100 px设置为3秒内的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>​

答案 3 :(得分: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/