在文档滚动上更改Div Css

时间:2014-06-05 06:03:08

标签: javascript jquery html css

我希望在文档滚动时将div位置固定,并且div从顶部达到50px。

请检查以下代码

HTML

<div id="main">
    <div id="nav"></div>
<div id="left"></div>

<div id="right">
    <div id="box1"></div>
    <div id="box2"></div>
</div>
</div>

CSS

#main{ overflow:hidden; width:600px; height:900px; background:#afaaac; margin:0; padding:0; }

#nav{ width:600px; height:40px; background:#15bc44; position:fixed; margin:0; padding:0;}

#left{ overflow:hidden; width:400px; height:900px; background:#18769e; float:left; }

#right{ overflow:hidden; width:200px; height:900px; background:#bc1544; float:right; }

#box1{ float:right; width:150px; height:200px; display:block;background:#e34d2a; margin-bottom:20px; }

#box2{ float:right; width:150px; height:200px; display:block;background:#e34d2a; margin-bottom:20px; }

.box2{ position:fixed; margin-left:50px; margin-top:50px; }  

JS

$(document).ready(function() {
    var s = $("#box2");
    var pos = s.position();                   
    $(window).scroll(function() {
        var windowpos = $(window).scrollTop() ;
        //s.html("Distance from top:" + pos.top + "<br />Scroll position: " + windowpos);
        if (windowpos >= pos.top) {
            s.addClass("box2");
        } else {
            s.removeClass("box2");
        }
    });

});

这项工作,但它会转到文档的顶部并跳回50px。

我也尝试过改变

$(window).scroll(function() {

$(window).scroll(function() > 50 {

if (windowpos >= pos.top) {if (windowpos >= 50) {

这似乎让位置跳了起来。请检查下面的JSFiddle

http://jsfiddle.net/uGw2Z/2/

如果有人能指出我正确的方法,我会非常适合。

2 个答案:

答案 0 :(得分:1)

只需添加一个数字以删除跳转: windowpos+54

Fiddle

答案 1 :(得分:0)

您需要更改.box2中的css代码,如下所示:

.box2{position:fixed; top:50px; margin-left:50px}

看看这个小提琴:JSFIDDLE