当前位置:  开发笔记 > 编程语言 > 正文

如何让页脚停留在网页的底部?

如何解决《如何让页脚停留在网页的底部?》经验,为你挑选了6个好方法。

我有一个简单的2列布局,页脚可以清除标记中的左右div.我的问题是我无法在所有浏览器中让页脚停留在页面底部.如果内容向下推动页脚,它就可以工作,但情况并非总是如此.

更新:

它在Firefox中无法正常工作.当页面上没有足够的内容将页脚一直向下推到浏览器窗口的底部时,我在页脚下方看到一条背景颜色条.不幸的是,这是页面的默认状态.



1> Staale..:

要获得粘性页脚:

    有一个

    class="wrapper"你的内容.

    收盘

    的的wrapper地方
    .

    收盘

的的wrapper地方 .

* {
    margin: 0;
}
html, body {
    height: 100%;
}
.wrapper {
    min-height: 100%;
    height: auto !important;
    height: 100%;
    margin: 0 auto -142px; /* the bottom margin is the negative value of the footer's height */
}
.footer, .push {
    height: 142px; /* .push must be the same height as .footer */
}


它在带有
标签的asp.net中不起作用
@jlp:您需要将表单标记添加到高度:100%语句,否则它将破坏粘性页脚.像这样:html,body,form {height:100%;}

2> Danield..:

使用CSS vh单位!

关于粘性页脚的最明显和非黑客的方法可能是使用新的css视口单元.

以下面的简单标记为例:

header goes here
This page has little content
This is my footer

如果标题高80px且页脚高40px,那么我们可以在内容div上使用单个规则制作粘性页脚:

.content {
    min-height: calc(100vh - 120px);
    /* 80px header + 40px footer = 120px  */
}

这意味着:让内容div的高度至少为视口高度的100%减去页眉和页脚的组合高度.

而已.

* {
    margin:0;
    padding:0;
}
header {
    background: yellow;
    height: 80px;
}
.content {
    min-height: calc(100vh - 120px);
    /* 80px header + 40px footer = 120px  */
    background: pink;
}
footer {
    height: 40px;
    background: aqua;
}
header goes here
This page has little content
This is my footer


3> gcedo..:
粘性页脚 display: flex

解决方案的灵感来自菲利普沃尔顿的粘性页脚.

说明

此解决方案仅适用于:

铬≥21.0

Firefox≥20.0

InternetExplorer≥10

Safari≥6.1

它基于flex显示,利用flex-grow属性,允许元素在高度宽度(当设置为或分别设置)时增长,以占据容器中的额外空间.flow-directioncolumnrow

我们要充分利用也是vh单元,其中1vh被定义为:

视口高度的1/100

因此,100vh它的高度是一种简洁的方式,可以告诉元素跨越整个视口的高度.

这就是您构建网页的方式:

----------- body -----------
----------------------------

---------- footer ----------
----------------------------

为了让页脚粘到页面底部,您希望主体和页脚之间的空间增长到将页脚推到页面底部所需的数量.

因此我们的布局变为:

----------- body -----------
----------------------------

---------- spacer ----------
                             <- This element must grow in height
----------------------------

---------- footer ----------
----------------------------

履行

body {
    margin: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.spacer {
    flex: 1;
}

/* make it visible for the purposes of demo */
.footer {
    height: 50px;
    background-color: red;
}

    
Hello World!


4> Jimmy..:

您可以使用position: absolute以下内容将页脚放在页面底部,但请确保您的2列具有适当的值,margin-bottom以便它们永远不会被页脚遮挡.

#footer {
    position: absolute;
    bottom: 0px;
    width: 100%;
}
#content, #sidebar { 
    margin-bottom: 5em; 
}


如果内容增长,它与内容重叠.

5> Sophivorus..:

这是一个jQuery的解决方案,就像一个魅力.它检查窗口的高度是否大于身体的高度.如果是,那么它会更改页脚的页边距以进行补偿.在Firefox,Chrome,Safari和Opera中测试过.

$( function () {

    var height_diff = $( window ).height() - $( 'body' ).height();
    if ( height_diff > 0 ) {
        $( '#footer' ).css( 'margin-top', height_diff );
    }

});

如果您的页脚已经有一个margin-top(例如50像素),您将需要更改最后一部分:

css( 'margin-top', height_diff + 50 )



6> Raleigh Buck..:

设置为的CSS #footer:

position: absolute;
bottom: 0;

然后,您需要在您的底部添加一个padding或以及匹配高度或重叠时,将覆盖它们.margin#sidebar#content#footer#footer

另外,如果我没记错的话,IE6的bottom: 0CSS 有问题.您可能必须使用IE6的JS解决方案(如果您关心的是IE6).


当窗口太小时,页脚会出现在这个css的内容前面.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有