网站页脚始终保持底部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网站页脚始终保持底部相关的知识,希望对你有一定的参考价值。

刚写的时候有三种思路:

  1. 页脚代码直接放到最下边;但是内容少的时候页脚显示在内容的底部,而不是浏览器的底部;
  2. 相对于视窗定位;但是内容多的时候页脚一直在视窗底部,于产品需求不符;
  3. 内容区最小高度为100%,页脚代码在最底部;但是内容少的时候右侧会出现本不应该出现的滚动条,滚动高度为底部高度;

最终使用方法亮点,margin-bottom负值(如果你觉得这个提示够了,就自己开始写会更有意思)

首次构想代码:

技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8"/>
 5     <title>测试</title>
 6     <style type="text/css">
 7     *{margin:0;padding:0;}
 8     html, body{height:100%;}
 9     #main{min-height: 100%;margin-bottom:-60px;}
10     #footer{height:60px;background: yellow;}
11     li{line-height: 100px;}
12     </style>
13 </head>
14 <body>
15 <div id="main">
16     主内容
17 </div>
18 <div id="footer">
19     这个是底部
20 </div>
21 </body>
22 </html>
View Code

乍一看似乎没有什么异常,但是我们往主内容区域放更多内容呢?

技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8"/>
 5     <title>测试</title>
 6     <style type="text/css">
 7     *{margin:0;padding:0;}
 8     html, body{height:100%;}
 9     #main{min-height: 100%;margin-bottom:-60px;}
10     #footer{height:60px;background: yellow;}
11     li{line-height: 100px;}
12     </style>
13 </head>
14 <body>
15 <div id="main">
16     <ul>
17         <li>发送到发送到发</li>
18         <li>发送到发送到发</li>
19         <li>发送到发送到发</li>
20         <li>发送到发送到发</li>
21         <li>发送到发送到发</li>
22         <li>发送到发送到发</li>
23         <li>发送到发送到发</li>
24         <li>发送到发送到发</li>
25         <li>发送到发送到发</li>
26         <li>发送到发送到发</li>
27         <li>发送到发送到发</li>
28         <li>发送到发送到发</li>
29         <li>发送到发送到发法师打发杀到发送到发发送到发送到发</li>
30     </ul>
31 </div>
32 <div id="footer">
33     这个是底部
34 </div>
35 </body>
36 </html>
View Code

主内容区和底部重合

哦,那好办,将底部的层级弄的高一点,所以就有了如下代码:

技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8"/>
 5     <title>测试</title>
 6     <style type="text/css">
 7     *{margin:0;padding:0;}
 8     html, body{height:100%;}
 9     #main{min-height: 100%;margin-bottom:-60px;}
10     #footer{height:60px;background: yellow;position: relative;z-index: 1;}
11     li{line-height: 100px;}
12     </style>
13 </head>
14 <body>
15 <div id="main">
16     <ul>
17         <li>发送到发送到发</li>
18         <li>发送到发送到发</li>
19         <li>发送到发送到发</li>
20         <li>发送到发送到发</li>
21         <li>发送到发送到发</li>
22         <li>发送到发送到发</li>
23         <li>发送到发送到发</li>
24         <li>发送到发送到发</li>
25         <li>发送到发送到发</li>
26         <li>发送到发送到发</li>
27         <li>发送到发送到发</li>
28         <li>发送到发送到发</li>
29         <li>发送到发送到发法师打发杀到发送到发发送到发送到发</li>
30     </ul>
31 </div>
32 <div id="footer">
33     这个是底部
34 </div>
35 </body>
36 </html>
View Code

完美了吗?

哦~~~no~~细心的人会发现,主内容区最后一个li的内容明明很长的,好像没有显示。

对了,是的,但是不是没有显示,刚刚没有给底部添加层级的时候还和底部重合了呢,只是底部层级增加以后被底部给遮盖了呢。

OK,这个时候有多重方法来解决这个问题:

  1. 在主内容区外面再套一层,添加padding-bottom / margin-bottom为页脚高
  2. 在主内容区id为main的div下边放置一个高度和页脚高度相同的空标签

以下分别是上边两条对应的代码,各有好坏,根据个人喜好采用;本人采用的是第2条,尽管会有空标签,但是主内容层级太深实在不喜欢;

技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8"/>
 5     <title>测试</title>
 6     <style type="text/css">
 7     *{margin:0;padding:0;}
 8     html, body{height:100%;}
 9     #main{min-height: 100%;margin-bottom:-60px;}
10     #footer{height:60px;background: yellow;position: relative;z-index: 1;}
11     li{line-height: 100px;}
12     #content{padding-bottom:60px;}
13     </style>
14 </head>
15 <body>
16 <div id="main">
17     <div id="content">
18         <ul>
19             <li>发送到发送到发</li>
20             <li>发送到发送到发</li>
21             <li>发送到发送到发</li>
22             <li>发送到发送到发</li>
23             <li>发送到发送到发</li>
24             <li>发送到发送到发</li>
25             <li>发送到发送到发</li>
26             <li>发送到发送到发</li>
27             <li>发送到发送到发</li>
28             <li>发送到发送到发</li>
29             <li>发送到发送到发</li>
30             <li>发送到发送到发</li>
31             <li>发送到发送到发法师打发杀到发送到发发送到发送到发</li>
32         </ul>
33     </div>
34 </div>
35 <div id="footer">
36     这个是底部
37 </div>
38 </body>
39 </html>
View Code
技术分享
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8"/>
 5     <title>测试</title>
 6     <style type="text/css">
 7     *{margin:0;padding:0;}
 8     html, body{height:100%;}
 9     #main{min-height: 100%;margin-bottom:-60px;}
10     #footer{height:60px;background: yellow;position: relative;z-index: 1;}
11     li{line-height: 100px;}
12     .false-footer{height:60px;}
13     </style>
14 </head>
15 <body>
16 <div id="main">
17     <ul>
18         <li>发送到发送到发</li>
19         <li>发送到发送到发</li>
20         <li>发送到发送到发</li>
21         <li>发送到发送到发</li>
22         <li>发送到发送到发</li>
23         <li>发送到发送到发</li>
24         <li>发送到发送到发</li>
25         <li>发送到发送到发</li>
26         <li>发送到发送到发</li>
27         <li>发送到发送到发</li>
28         <li>发送到发送到发</li>
29         <li>发送到发送到发</li>
30         <li>发送到发送到发法师打发杀到发送到发发送到发送到发</li>
31     </ul>
32     <div class="false-footer"></div>
33 </div>
34 <div id="footer">
35     这个是底部
36 </div>
37 </body>
38 </html>
View Code

 

以上是关于网站页脚始终保持底部的主要内容,如果未能解决你的问题,请参考以下文章

如何使页脚视图始终位于 UITableViewController 的底部?

Angular 中的响应式页脚,带有始终位于页面底部的引导程序。不粘

CSS:即使在滚动时也使页脚始终位于页面底部

DIV+CSS:页脚永远保持在页面底部

Bootstrap 粘性页脚

页脚始终位于底部但不固定