固定标题Div的CSS问题

时间:2012-04-23 02:11:33

标签: javascript jquery html css

我的页面上有一个标题div,当页面向下滚动到标题区域时,它被固定在顶部(通过位置:'固定',顶部:0),但问题是内容位于其下方的div在位置属性更改后最终向上移动,填充了标头div用于占用的空间。有没有人知道如何修复它,以便一旦位置更改为固定,标题下方的内容不会向上滑动?

提前致谢!!下面是我正在使用的代码,它使用JQuery来固定标题:


    <html>

    <head>

    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>

    <style type="text/css">

        .para {

           background-color:yellow;

        }

        .pinned {
            background-color:#0000FF;
        }

        #pinHeader.fixed {
          position: fixed;
          top: 0;
          width:100%;
        }

    </style>

    </head>


    <body>

    <div>

                         <div>
                              <h1>Nav goes here</h1>

                         </div>


                            <div>

                                        <div id="pinHeader" class="pinned">

                                                <h1> Main Header </h1>
                                                <h2>Sub header goes here</h2>
                                                <hr />

                                        </div>

                            </div> 


                                    <!-- main content goes here -->

            <div id="mainContent">

                                                  <h2>Content 1</h2>
                                                  <p class="para">blah blah blah blah blah blah blah blah blah blah blah blah blah blah<br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                  </p> 

                                                  <h2>Content 2</h2>
                                                  <p class="para">blah blah blah blah blah blah blah blah blah blah blah blah blah blah<br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                  </p> 

                                                  <h2>Content 3</h2>
                                                  <p class="para">blah blah blah blah blah blah blah blah blah blah blah blah blah blah<br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                  </p> 

                                                  <h2>Content 4</h2>
                                                  <p class="para">blah blah blah blah blah blah blah blah blah blah blah blah blah blah<br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                     blah blah blah blah blah blah blah blah blah blah blah blah blah blah <br />
                                                  </p>                                   

            </div>


    </div>



    <script type="text/javascript">
    var divTop = null;
    jQuery(document).ready(function(){

        jQuery(window).scroll(function() {
            pinnedPanel();

        });

        jQuery(window).resize(function() {

            pinnedPanel();

        });

        divTop = jQuery('#pinHeader').offset().top;
    });

    var pinned = false;

    function pinnedPanel() {

    var stickHeader = jQuery('#pinHeader');

    var contentDiv = jQuery('#mainContent');

      // what the y position of the scroll is
      var y = jQuery(window).scrollTop();

      if (y >= divTop) {
            stickHeader.addClass('fixed');
            pinned = true;

      } else if (pinned) {
            stickHeader.removeClass('fixed');
            pinned = false;

      }

    }

    </script>

    </body>

    </html>

3 个答案:

答案 0 :(得分:1)

将stickHeader的高度添加到contentDiv的margin-top,并将其恢复为unpin之前的任何值(假设为零)。

if (y >= divTop) {
    stickHeader.addClass('fixed');
    contentDiv.css('margin-top', stickHeader.height())
    pinned = true;

} else if (pinned) {
    stickHeader.removeClass('fixed');
    contentDiv.css('margin-top', 0)
    pinned = false;

}

答案 1 :(得分:0)

尝试使用margin-top作为标题div ... try it..

答案 2 :(得分:0)

将导航栏固定在顶部或底部会导致分层,否则会避免。所以:如果你弄清楚酒吧占用的空间量,特别是高度......你要么从边缘顶部加上或减去这个差异。

如果您希望内容不会向标题顶部提升:

margin-top: -some px;

如果您希望内容向下移动页面:

margin-top: some px;