将页脚固定在页面底部的CSS实战

   页脚的位置问题

  网页的页脚(footer),也就是通常用来放置帮助链接及版权信息的地方。页脚自然是应该位于页面底部的,但依照一般的做法,如果位于页脚之前的网页内容比较少,或者说使用了一个垂直分辨率较大的显示器,就有可能出现页脚看起来不在页面底部的情况,如下图。


  由于页脚基本上是一个网站的所有页面公用的部分,不同页面的内容量有所差异,因此确实有可能某些页面内容不够而出现这样的问题。另外,尤其是包含了底色的页脚,发生这种问题会很影响美观。

  所以,我们希望页脚能够无论网页内容量多少,都准确地位于底部。

  固定页脚到底部的方法

  绝对定位可行吗?

  也许有人想到过把页脚设置为position:fixed,然后定位在底部。先不考虑不支持这个属性值的IE6,从效果上说,如果网页本身内容就很充足,这样的写法就会让页脚一开始就出现在浏览器的底部,而在滚动网页时,页脚会一直保持原位置。这样的效果,显然对大部分的网站都是不适宜的。

  可以想见,我们需要的效果是:

  网页内容较多时,在滚动到底部的时候才看到位于最下方的页脚。

  网页内容较少时,页脚仍然位于整个页面的最下方,其余部分留白。

  常规、简单的实现方法

  CSS Sticky Footer提供了这个固定页脚在底部的合理的实现方法。不过一方面这是一个英文站点,另一方面它所提供的写法还存在些许可以改善的地方,所以本文会参考它的内容,给出一个合理的实现方法。

  首先需要这样一个html结构:

 XML/HTML Code复制内容到剪贴板

  1. <body>
  2. <div class="wrapper">
  3. <!--网页内容-->
  4. <div class="footer_placeholder"></div>
  5. </div>
  6. <div class="footer">
  7. <!--页脚-->
  8. </div>
  9. </body>

  div.wrapper是网页中除页脚之外的所有内容的外层容器,页脚div.footer和它位于同一层级。div.footer_placeholder必须放在网页所有内容的最后,即作为div.wrapper的最后一个子元素,它的作用会在后文中说明。

  接下来写css,依次做说明。

  CSS Code复制内容到剪贴板

  html, body{height:100%;}

  当网页内容不足的时候,body和html的实际高度可能小于浏览器的可视范围,因此给body和html写上高度100%。此外,接下来的直接子元素也会使用百分比的写法,百分比的写法必须在直接父元素有确定的高度定义时才有效。

  CSS Code复制内容到剪贴板

  .wrapper{

  min-height:100%;

  _height:100%;

  margin-bottom:-120px; /*假定页脚的高度为120px*/

  }

  所有网页内容都在这个div.wrapper中,定义最小高度(IE6使用hack),由于这个元素的父元素就是定义了100%高度的body,因此无论内容多少,div.wrapper这个元素的高度都会占据整个浏览器可视范围。然后,依照页脚的高度,设置相等的下边距负值,这样页脚就会恰好出现在页面内容的最后。

  CSS Code复制内容到剪贴板

  .footer, .footer_placeholder{height:120px;} /*假定页脚的高度为120px*/

  div.footer_placeholder,如字面意义,页脚的占位元素,它只是一个空的div,定义高度和页脚相同,它的存在是为了给页脚留下位置。如果没有它,可能会发生这样的事情↓


  到这里,固定在底部的页脚就已经实现了。css部分合起来是:

  CSS Code复制内容到剪贴板

  html, body{height:100%;}

  .wrapper{

  min-height:100%;

  _height:100%;

  margin-bottom:-120px; /*假定页脚的高度为120px*/

  }

  .footer, .footer_placeholder{height:120px;}

  如果还需要考虑css初始化和清理浮动,可能你还需要添加下面这部分css:

  body{margin:0;}

  .footer_placeholder{clear:both;}

时间: 2025-01-21 13:36:58

将页脚固定在页面底部的CSS实战的相关文章

将HTML的页脚固定在屏幕下方

/********************************************************************* * 将HTML的页脚固定在屏幕下方 * 说明: * 处理的方法好像是比较多的,个人还是比较倾向于用JS进行处理. * * 2017-8-25 深圳 龙华樟坑村 曾剑锋 ********************************************************************/ 一.参考文档: 1. 将footer固定在页面底部

css把底部footer固定在页面底部

看完这篇文章后决定用第三个方法,其实很想用jq的,方便灵活,咨询了好多老前辈后,得知Js控制DOM在性能上影响比较大,能用css和html解决就不要用js了. HTML  代码如下 复制代码 <div id="container"> <div>.........</div>   <div class="push"><!-- not put anything here --></div> <

最小高度100%页脚保持在底部的布局方法

有时候,我们用CSS创建一个高度自适应布局,如何保证页脚(footer)在内容不超过一屏的情况下始终保持在布局最下方是一个比较头疼的事.我看过一些利用绝对定位的例子,但总感觉不是那么完美,经过一下午的研究总结出一个利用负值外补丁的方法来实现这个效果的方法,兼容IE5.0+,Opera 8.5+,Firefox 1.5+.下面我们看步骤: 1.为了让浏览器识别高度100%我们需要先给 html 和 body 加上一个高度值,同时清除所有元素的 margin 和 padding.顺便提一下,经过我的

最小高度100%页脚保持在底部的方法

有时候,我们用CSS创建一个高度自适应布局,如何保证页脚(footer)在内容不超过一屏的情况下始终保持在布局最下方是一个比较头疼的事.我看过一些利用绝对定位的例子,但总感觉不是那么完美,经过一下午的研究总结出一个利用负值外补丁的方法来实现这个效果的方法,兼容IE5.0+,Opera 8.5+,Firefox 1.5+.下面我们看步骤: 1.为了让浏览器识别高度100%我们需要先给 html 和 body 加上一个高度值,同时清除所有元素的 margin 和 padding.顺便提一下,经过我的

水晶报表打印页脚问题

问题描述 小弟遇到一个问题想请教,在水晶报表的节专家里的页脚,里面"在页面底部打印"没有勾上,结果在最后一页的页脚没被打印出来,请教各位老师是如何解决的?环境:vs2003+自带的水晶报表 解决方案 解决方案二:什么意思?没有选中的话就选中是啦解决方案三:想要选中呀,但那是灰色的不能选的,但是新建一个报表就会发现页脚的"在页面底部打印"是勾上的,虽然也是不可选的.解决方案四:该回复于2010-06-17 00:15:47被版主删除解决方案五:该回复于2010-06-

jquery实现页面底部div固定

先说遇到的问题,一个没有满一屏的页面,需要将底部的信息栏固定在下面,并且随着浏览器窗口大小的变化而保持位置始终在底部. 风哥的解决方案, 用jq,直接灭. 一句话,不割, 代码如下:  代码如下 复制代码 $(window).resize(function(){              var h_doc = $(document).height();              var h_foo = h_doc-25;              $('#footer').offset({to

jQuery Mobile的学习 jQuery Mobile工具栏、标题栏、页脚栏的定位学习

程序员都很赖,你懂的! 最近在做html5页面的开发,主要做智能终端设备的开发.对于内容比较少的页面,领导提出了要将页眉和页脚定位到网页的最上方和最下方.对于这样的要求,其实一点也不过分.但对于新手来说,确实很难,很不容易,今天我就将我学习的内容一起分享一下!放置页眉和页脚的方式有三种:     Inline - 默认.页眉和页脚与页面内容位于行内.     Fixed - 页面和页脚会留在页面顶部和底部.     Fullscreen - 与 fixed 类似;页面和页脚会留在页面顶部和底部请

怎样在文档的不同部分添加不同的页眉和页脚或页码

例如,您可能希望对目录和简介采用 i.ii.iii 编号,对文档的其余部分采用 1.2.3 编号,而不会对索引采用任何页码. 此外,您还可以在奇数和偶数页上采用不同的页眉或页脚. 在不同部分中添加不同的页眉和页脚或页码 1.单击要在其中开始设置.停止设置或更改页眉.页脚或页码编号的页面开头. 按 Home 可确保光标位于页面开头. 2.在"页面布局"选项卡上的"页面设置"组中,单击"分隔符". 3.在"分节符"下,单击&quo

JQuery Mobile实现导航栏和页脚_jquery

导航栏由一组水平排列的链接构成,通常位于页眉或页脚内部. 默认地,导航栏中的链接会自动转换为按钮(无需 data-role="button"). 导航栏部分的代码一般放置在data-role为header的div的内. <div data-role="header"> <a href="#" data-role="button" data-icon="home">首页</a&g