如何在不滚动的情况下使此页眉和页脚可见?

Posted

技术标签:

【中文标题】如何在不滚动的情况下使此页眉和页脚可见?【英文标题】:How to make this header and footer visible without scrolling? 【发布时间】:2014-09-21 13:18:42 【问题描述】:

我正在编写一个 Web 应用程序。我希望页面适合浏览器,以便页眉和页脚始终位于浏览器的顶部和底部,无需滚动。

我已经能够在当前版本的 Fire Fox、Chrome 和 Internet Explorer 上执行此操作。但我无法让它在 iPad 上运行。在横向中,iPad 会完美地缩放网站的宽度,以便适合整个网站的宽度,但您需要进行少量滚动才能看到页脚。当 iPad 以纵向放置时,我得到相反的结果。无需滚动即可看到整个网站的高度,但现在您必须水平滚动才能看到完整的标题。

以下是代码示例: http://jsfiddle.net/v8mkygcw/

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Blank</title>
    <style type="text/css">
        bodymargin:0;
        #site-links height:20px; background:#FAFAFA;  min-width:932px; border-bottom:solid 1px #A0A0A0;
        .site-link color:#919191; float:left; padding-right:6px; border-right:solid 1px #c7c7c7; margin-right:6px;
        #hdr-width max-width:1040px; min-width:640px; margin:0 auto;

        #mainposition:absolute; top:21px; bottom: 0; left:0; right:0; overflow:hidden; text-align:center; 
        #content position:absolute; top: 0; bottom: 21px; right:0; left:0; overflow:hidden; overflow-y:auto; 
        #footer position:absolute; left:0; right:0; bottom:0; height:20px; background:#F8F8F8;border-top:solid 1px #A0A0A0;
    </style>
</head>
<body>
    <div>

        <div id="site-links">
            <div id="hdr-width">
                <a class="site-link">Link1</a>
                <a class="site-link">Link2</a>
                <a class="site-link">Link3</a>
            </div>
        </div>
        <div id="main">
            <div id="content">
                <div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div>
            </div>
            <div id="footer">Footer</div>
        </div>

    </div>
</body>
</html>

非常感谢任何帮助。谢谢!

【问题讨论】:

【参考方案1】:

.site-links 有一个min-width:932px;

这告诉浏览器,无论窗口大小,div 至少应该有 932px,所以滚动出现。从 css 中删除该行。

http://jsfiddle.net/v8mkygcw/1/

【讨论】:

【参考方案2】:

您可以通过给它们固定位置来创建粘性页眉和页脚:

#site-links position:fixed; left:0; right:0; top:0; height:20px; z-index:1000; background:#FAFAFA;  border-bottom:solid 1px #A0A0A0;

#footer position:fixed; left:0; right:0; bottom:0; height:20px; z-index:1000; background:#F8F8F8;border-top:solid 1px #A0A0A0;

在这个fiddle body 的高度设置为 1000px 只是为了演示

【讨论】:

【参考方案3】:

只需将position:absolute 更改为position:fixed

  bodymargin:0;
        #site-links height:20px; background:#FAFAFA;  min-width:932px; border-bottom:solid 1px #A0A0A0;
        .site-link color:#919191; float:left; padding-right:6px; border-right:solid 1px #c7c7c7; margin-right:6px;
        #hdr-width max-width:1040px; min-width:640px; margin:0 auto;

        #mainposition:fixed; top:21px; bottom: 0; left:0; right:0; overflow:hidden; text-align:center; 
        #content position:absolute; top: 0; bottom: 21px; right:0; left:0; overflow:hidden; overflow-y:auto; 
        #footer position:fixed; left:0; right:0; bottom:0; height:20px; background:#F8F8F8;border-top:solid 1px #A0A0A0;
    
<div>

        <div id="site-links">
            <div id="hdr-width">
                <a class="site-link">Link1</a>
                <a class="site-link">Link2</a>
                <a class="site-link">Link3</a>
            </div>
        </div>
        <div id="main">
            <div id="content">
                <div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div>
            </div>
            <div id="footer">Footer</div>
        </div>

    </div>

【讨论】:

我很想试试这个。但我刚刚将我的 iPad 更新到 ios 8.0,现在我的原始代码可以正常工作。我认为这是刚刚修复的移动 Safari 的一个错误。

以上是关于如何在不滚动的情况下使此页眉和页脚可见?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置页眉、可滚动内容和页脚?在安卓中

如何仅在正文上启用反弹过度滚动(而不是页眉和页脚)?

如何将 wordpress 博客与网站页眉和页脚设计集成到 php 网站博客页面?

我如何重新定位固定的页眉和页脚?

如何在角度材料中实现 Sidenav、页眉和页脚?

如何将 DiffUtil.Callback 与具有页眉和页脚的 RecyclerView 一起使用?