代码之家  ›  专栏  ›  技术社区  ›  David

如何保持标题静态,滚动时始终在顶部?

  •  56
  • David  · 技术社区  · 15 年前

    我该如何保持我的 header 从滚动页面的其余部分?我想利用 frame-sets iframes

    7 回复  |  直到 15 年前
        1
  •  83
  •   Yi Jiang G-Man    15 年前

    使用 position: fixed div 它包含了你的标题,比如

    #header {
      position: fixed;
    }
    
    #content {
      margin-top: 100px;
    }
    

    在本例中,当 #content #header ,但当用户滚动时, #收割台 #收割台 有一个背景,这样当两个 部门 s重叠。看一看这个 position http://reference.sitepoint.com/css/position

        2
  •  17
  •   Vandesh    5 年前

    position: sticky;

    modern, supported browsers ,您只需在CSS中使用-

    header {
      position: sticky;
      top: 0;
    }
    

    position: fixed ,自 位置:固定

    注意 :使用时HTML结构很重要 position: sticky ,因为它使元素相对于父元素具有粘性。而且粘性定位可能不适用于父元素中的单个粘性元素。

    main{
    padding: 0;
    }
    header{
    position: sticky;
    top:0;
    padding:40px;
    background: lightblue;
    text-align: center;
    }
    
    content > div {
    height: 50px;
    }
    <main>
    <header>
    This is my header
    </header>
    <content>
    <div>Some content 1</div>
    <div>Some content 2</div>
    <div>Some content 3</div>
    <div>Some content 4</div>
    <div>Some content 5</div>
    <div>Some content 6</div>
    <div>Some content 7</div>
    <div>Some content 8</div>
    </content>
    </main>
        3
  •  9
  •   Suresh Pattu    7 年前

    .header {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 88px;
      z-index: 10;
      background: #eeeeee;
      -webkit-box-shadow: 0 7px 8px rgba(0, 0, 0, 0.12);
      -moz-box-shadow: 0 7px 8px rgba(0, 0, 0, 0.12);
      box-shadow: 0 7px 8px rgba(0, 0, 0, 0.12);
    }
    
    .header__content-text {
      text-align: center;
      padding: 15px 20px;
    }
    
    .page__content-container {
      margin: 100px auto;
      width: 975px;
      padding: 30px;
    }
    <div class="header">
      <h1 class="header__content-text">
        Header content will come here
      </h1>
    </div>
    <div class="page__content-container">
      <div style="height:600px;">
        <a href="http://imgur.com/k9hz3">
          <img src="http://i.imgur.com/k9hz3.jpg" title="Hosted by imgur.com" alt="" />
        </a>
      </div>
      <div style="height:600px;">
        <a href="http://imgur.com/TXuFQ">
          <img src="http://i.imgur.com/TXuFQ.jpg" title="Hosted by imgur.com" alt="" />
        </a>
      </div>
    </div>
        4
  •  6
  •   mehdi lotfi    11 年前

    如果可以使用bootstrap3,那么就可以使用css“navbar fixed top”

    body{
    
       margin-top:100px;
    }
    
        5
  •  4
  •   shannoga    13 年前

    下面是一个css+jquery(javascript)解决方案。

    Demo

    //html
    
    <div id="uberbar">
        <a href="#top">Top of Page</a>
        <a href="#bottom">Bottom of Page</a>
    
    </div>
    
    //css 
    
    #uberbar    { 
        border-bottom:1px solid #eb7429; 
        background:#fc9453; 
        padding:10px 20px; 
        position:fixed; 
        top:0; 
        left:0; 
        z-index:2000; 
        width:100%;
    }
    
    //jquery
    
    $(document).ready(function() {
        (function() {
            //settings
            var fadeSpeed = 200, fadeTo = 0.5, topDistance = 30;
            var topbarME = function() { $('#uberbar').fadeTo(fadeSpeed,1); }, topbarML = function() { $('#uberbar').fadeTo(fadeSpeed,fadeTo); };
            var inside = false;
            //do
            $(window).scroll(function() {
                position = $(window).scrollTop();
                if(position > topDistance && !inside) {
                    //add events
                    topbarML();
                    $('#uberbar').bind('mouseenter',topbarME);
                    $('#uberbar').bind('mouseleave',topbarML);
                    inside = true;
                }
                else if (position < topDistance){
                    topbarME();
                    $('#uberbar').unbind('mouseenter',topbarME);
                    $('#uberbar').unbind('mouseleave',topbarML);
                    inside = false;
                }
            });
        })();
    });
    
        6
  •  2
  •   ChrisAdmin    9 年前

    在浏览了所有的答案之后,我发现了一个稍微不同的方法,最少的CSS,没有JS,只有页眉的高度需要正确设置 #content ,在这种情况下 60px

    CSS格式:

    #header {
      position: fixed;
      width: 100%;
      top: 0;
      z-index: 10;
    }
    #content {
      margin-top: 60px;
      z-index:1;
    }
    

    HTML格式:

    <body>
      <div id="header" style="background-color:GRAY; text-align:center; border-bottom:1px SOLID BLACK; color:WHITE; line-height:50px; font-size:40px">
         My Large Static Header
      </div>
      <div id="content">
         <!-- All page content here -->
      </div>
    </body>
    
        7
  •  1
  •   Community Mohan Dere    9 年前

    有一种方法可以通过播放卷轴来固定标题,而不是在不知道标题大小的情况下使用定位和填充/边距。

    看到了吗 this plunker 带有固定标题:

    <html lang="en" style="height: 100%">
    <body style="height: 100%">
    <div style="height: 100%; overflow: hidden">
      <div>Header</div>
      <div style="height: 100%; overflow: scroll">Content - very long Content...
    

    height: 100% 具有 overflow .

    here 然后回答 here .

        8
  •  -6
  •   Ethan Furman    11 年前

    此版本没有其他解决方案在浮动div或灵活/自动调整列和行大小方面的包装问题。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script language="javascript" type="text/javascript" src="/Scripts/jquery-1.7.2.min.js"></script>
        <script language="javascript" type="text/javascript">
            // Handler for scrolling events
            function scrollFixedHeaderTable() {
                var outerPanel = $("#_outerPanel");
                var cloneLeft = $("#_cloneLeft");
                var cloneTop = $("#_cloneTop");
                cloneLeft.css({ 'margin-top': -outerPanel.scrollTop() });
                cloneTop.css({ 'margin-left': -outerPanel.scrollLeft() });
            }
    
            function initFixedHeaderTable() {
                var outerPanel = $("#_outerPanel");
                var innerPanel = $("#_innerPanel");
                var clonePanel = $("#_clonePanel");
                var table = $("#_table");
                // We will clone the table 2 times: For the top rowq and the left column. 
                var cloneLeft = $("#_cloneLeft");
                var cloneTop = $("#_cloneTop");
                var cloneTop = $("#_cloneTopLeft");
                // Time to create the table clones
                cloneLeft = table.clone();
                cloneTop = table.clone();
                cloneTopLeft = table.clone();
                cloneLeft.attr('id', '_cloneLeft');
                cloneTop.attr('id', '_cloneTop');
                cloneTopLeft.attr('id', '_cloneTopLeft');
                cloneLeft.css({
                    position: 'fixed',
                    'pointer-events': 'none',
                    top: outerPanel.offset().top,
                    'z-index': 1 // keep lower than top-left below
                });
                cloneTop.css({
                    position: 'fixed',
                    'pointer-events': 'none',
                    top: outerPanel.offset().top,
                    'z-index': 1 // keep lower than top-left below
                });
                cloneTopLeft.css({
                    position: 'fixed',
                    'pointer-events': 'none',
                    top: outerPanel.offset().top,
                    'z-index': 2 // higher z-index than the left and top to make the top-left header cell logical
                });
                // Add the controls to the control-tree
                clonePanel.append(cloneLeft);
                clonePanel.append(cloneTop);
                clonePanel.append(cloneTopLeft);
                // Keep all hidden: We will make the individual header cells visible in a moment
                cloneLeft.css({ visibility: 'hidden' });
                cloneTop.css({ visibility: 'hidden' });
                cloneTopLeft.css({ visibility: 'hidden' });
                // Make the lef column header cells visible in the left clone
                $("#_cloneLeft td._hdr.__row").css({
                    visibility: 'visible',
                });
                // Make the top row header cells visible in the top clone
                $("#_cloneTop td._hdr.__col").css({
                    visibility: 'visible',
                });
                // Make the top-left cell visible in the top-left clone
                $("#_cloneTopLeft td._hdr.__col.__row").css({
                    visibility: 'visible',
                });
                // Clipping. First get the inner width/height by measuring it (normal innerWidth did not work for me)
                var helperDiv = $('<div style="positions: absolute; top: 0; right: 0; bottom: 0; left: 0; height: 100%;"></div>');
                outerPanel.append(helperDiv);
                var innerWidth = helperDiv.width();
                var innerHeight = helperDiv.height();
                helperDiv.remove(); // because we dont need it anymore, do we?
                // Make sure all the panels are clipped, or the clones will extend beyond them
                outerPanel.css({ clip: 'rect(0px,' + String(outerPanel.width()) + 'px,' + String(outerPanel.height()) + 'px,0px)' });
                // Clone panel clipping to prevent the clones from covering the outerPanel's scrollbars (this is why we use a separate div for this)
                clonePanel.css({ clip: 'rect(0px,' + String(innerWidth) + 'px,' + String(innerHeight) + 'px,0px)'   });
                // Subscribe the scrolling of the outer panel to our own handler function to move the clones as needed.
                $("#_outerPanel").scroll(scrollFixedHeaderTable);
            }
    
    
            $(document).ready(function () {
                initFixedHeaderTable();
            });
    
        </script>
        <style type="text/css">
            * {
                clip: rect font-family: Arial;
                font-size: 16px;
                margin: 0;
                padding: 0;
            }
    
            #_outerPanel {
                margin: 0px;
                padding: 0px;
                position: absolute;
                left: 50px;
                top: 50px;
                right: 50px;
                bottom: 50px;
                overflow: auto;
                z-index: 1000;
            }
    
            #_innerPanel {
                overflow: visible;
                position: absolute;
            }
    
            #_clonePanel {
                overflow: visible;
                position: fixed;
            }
    
            table {
            }
    
            td {
                white-space: nowrap;
                border-right: 1px solid #000;
                border-bottom: 1px solid #000;
                padding: 2px 2px 2px 2px;
            }
    
            td._hdr {
                color: Blue;
                font-weight: bold;
            }
            td._hdr.__row {
                background-color: #eee;
                border-left: 1px solid #000;
            }
            td._hdr.__col {
                background-color: #ddd;
                border-top: 1px solid #000;
            }
        </style>
    </head>
    <body>
        <div id="_outerPanel">
            <div id="_innerPanel">
                <div id="_clonePanel"></div>
                <table id="_table" border="0" cellpadding="0" cellspacing="0">
                    <thead id="_topHeader" style="background-color: White;">
                        <tr class="row">
                            <td class="_hdr __col __row">
                                &nbsp;
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                            <td class="_hdr __col">
                                TOP HEADER
                            </td>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class="row">
                            <td class="_hdr __row">
                                MY HEADER COLUMN:
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                        </tr>
                        <tr class="row">
                            <td class="_hdr __row">
                                MY HEADER COLUMN:
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                            <td class="col">
                                The quick brown fox jumps over the lazy dog.
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <div id="_bottomAnchor">
            </div>
        </div>
    </body>
    </html>