代码之家  ›  专栏  ›  技术社区  ›  C Bauer

jquery获取将元素放在屏幕顶部所需的页边顶部

  •  0
  • C Bauer  · 技术社区  · 15 年前

    我在InternetExplorer6和FF中遇到了一个问题,我正试图在jquery中实现这个问题。基本上,页面顶部有一个使用浮动内容的对象,它似乎干扰了$(window).scrolltop()属性。

    这是我的理解(如果我错了,请告诉我正确的方法来帮助我!)该$(window.scrolltop()将返回滚动隐藏的空白。我做了一些没有浮动内容的测试,它们似乎支持这一点。

    这是我的代码:

    $(document).ready(function() {
        $(window).scroll(function() {
            if ($(window).scrollTop() > 180) { //is the window scrolled enough to hide the header?
                var $myDiv = $("#scrollingDiv");
                if ($myDiv.is(":hidden")) { //if mydiv is currently hidden, show it
                    $myDiv.show();
                }
                $myDiv.stop();
                $myDiv.animate({ marginTop: ($(window).scrollTop()) + "px" }, "fast", function() { /*animation complete*/ }); //move mydiv to the top edge of the page... OR SO I THOUGHT!
            }
            else { //otherwise hide it, since the header is visible
                $("#scrollingDiv").hide();
            }
        });
    });
    

    这是显示错误的HTML文档(您只需在下面的“evilfloatonton”部分注释,就可以看到它正常工作)。

    <HTML>
    <HEAD>
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        $(window).scroll(function() {
            if ($(window).scrollTop() > 180) {
                var $myDiv = $("#scrollingDiv");
                if ($myDiv.is(":hidden")) {
                    $myDiv.show();
                                }
                $myDiv.stop();
                $myDiv.animate({ marginTop: ($(window).scrollTop()) + "px" }, "fast", function() { /*animation complete*/ });
            }
            else {
                $("#scrollingDiv").hide();
            }
        });
    });
    </script>
    <style type="text/css">
    <!-- Enter any CSS to make objects viewable here -->
    #scrollingDiv
    {
        width: 100%;
        position: absolute;
        margin-top: 0px;
    }
    </style>
    </HEAD>
    <BODY>
    <!-- Enter in test elements here -->
    <div style="overflow: auto;">
        <div id="evilFloatomoton" style="float: left; height: 200px; width: 100%;">
            CONTENT<br /><br />
        </div>
    </div>
    <div id="scrollingDiv" style="background-color: #000; color: #FFF;">
        Scrolling floating div of doom
    </div>
    <div style="height: 180px; border: solid 1px #000;">
        *Highlight the 180 px scroll area*
    </div>
    <div style="height: 10000px;">
    
    </div>
    </BODY>
    </HTML>
    

    所以,在我的测试中,它不是像我想象的那样靠上边缘,而是在页面的中间。有人能帮我吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Seth    15 年前

    对于ScrollingDiv容器,将样式设置为position:absolute和top:0px。这应该让你的浮动区保持在一个位置。

    推荐文章