Page 222 - css揭秘
P. 222
41 紧贴底部的页脚
背景知识
视口相关的长度单位(参见“垂直居中”),calc()
难题
在网页设计中,存在一个相当古老但又相当常见的问题,它是前端工程
师绕不开的坎。这个问题可以简单地概括如下:有一个具有块级样式的页脚
(比如它设置了背景或阴影),当页面内容足够长时它一切正常,而当页面较
1①
短时(比如错误信息页面)就会出现问题 。此时的问题在于,页脚不能像我
们期望中那样“紧贴”在视口的最底部,而是紧跟在内容的下方。
这个问题不仅普遍存在,而且乍看起来确实相当简单。因此,在所
2
②
有“隐蔽大坑”式的难题中 ,它简直就是教科书般的典型案例。不仅如此,
CSS 2.1 基本上拿它没有办法:几乎所有的经典解决方案都需要给页脚设置
固定的高度,而这显然是不健壮的,也是不实际的。此外,所有这些解决方
案都太过复杂、太像 hack 了,而且往往要求网页按照特定的结构来写。在
那个年代,受制于 CSS 2.1 有限的能力范围,这已是我们所能达到的最好结
果了。不过,在现代 CSS 的协助下,我们可以做得更好吗?如果答案是肯
定的,又该如何去做?
固定高度的解决方案
我们手头的这个页面极其简单,<body> 元素内的结构代码如下所示:
① 具体来说,当页面内容的长度小于视口高度减去页脚高度时,这个问题就会出现。
② 如果你从来没有在这个大坑里体验过疯魔的快感,那不妨来感受一下前人针对这个问题所积
累下来的宝贵财富。在 CSS 第三版规范推出之前,这些解决方案曾经挽救过一个又一个的网
页开发者:
cssstickyfooter.com
ryanfait.com/sticky-footer
css-tricks.com/snippets/css/sticky-footer
pixelsvsbytes.com/blog/2011/09/sticky-css-footers-the-flexible-way
mystrd.at/modern-clean-css-sticky-footer
最后两个解决方案是这众多链接中最为精简的,但仍然有其局限之处。
41 紧贴底部的页脚 191
ࠡ JOEC