footer贴底的纯css实现方法

页面内容少时,footer跑到屏幕中间戳着是很难看的。用fixed吧,在内容多的时候又想它不要一直出现在屏幕下方,毕竟它不是那么重要。那么两全其美的办法是怎样的呢?

html代码

<div class="container"> 
  <div class="header">这是头部</div> 
  <div class="main"> 
    这是正文 
  </div> 
  <div class="footer">这是尾部</div> 
</div>

css代码

html,body{margin:0;padding:0;height:100%} 
.container{min-height:100%;height:auto !important;height:100%;/*ie6不识别min-height,如上述处理*/position:relative;} 
.main{padding-bottom:60px;/*padding等于footer的高度*/} 
.footer{position:absolute;bottom:0;width:100%;height:60px;/*footer的高度*/}

说明:

html,body{height:100%}很关键,只有父级元素设置了高度,里面元素的相对高度才会生效。html、body 100%的高度是屏幕的高度。

container容器设置最小高度min-height 为100%,而不是height:100%,这很关键,可以使它在内容很少(或没有内容)的情况下,能保持一屏的高度,(不过在IE6不支持min-height,所以为了兼容IE6,做以下处理:height:auto !important;height:100%;);在内容很多的情况下,也能展现实际的高度。同时在container容器中设置“position:relative”,再对里面的footer元素进行绝对定位后,这样footer就会根据container的高度来跑了,始终保持在container底部。 
main这个容器有一个很关键的设置,需要在这个容器上设置一个padding-bottom值,而且这个值要等于(或略大于)页脚footer的高度(height)值。

div#footer容器:div#footer容器必须设置一个固定高度,单位可以是px(或em)。div#footer还需要进行绝对定位,并且设置bottom:0;让div#footer固定在容器div#container的底部,这样就可以实现我们前面所说的效果,当内容只有一点时,div#footer固定在屏幕的底部(因为div#container设置了一个min-height:100%),当内容高度超过屏幕的高度,div#footer也固定在div#container底部,也就是固定在页面的底部。给div#footer加设一个”width:100%”,让它在整个页面上得到延伸。

总结:

思路就是对footer采用绝对定位,因为绝对定位是根据实际高度来的,我们就要保证其父容器在不足一屏时高度为一屏,在超过一屏时,高度为实际高度,通过min-height可以实现,相对高度又需要html,body{height:100%}配合,这样就OK了。

时间: 2024-11-05 19:03:20

footer贴底的纯css实现方法的相关文章

用纯css的方法实现popout内容

在没有引用jquery和其他插件的时候,可以通过纯css的方法实现popout框,效果类似tooltip.这种方法虽然很拙劣,但是未尝也是一种解决办法.我们都知道a标签有几个伪类可以使用,这里要特别注意的是a:link,a:visited,a:hover,a:active这四个伪类的顺序,若不按这样的顺序可能会导致无法实现预期的效果.一般我们只用a:hover这个伪类来实现悬停的效果,而巧妙地利用这个伪类,我们可以实现类似tooltip的效果.但这有一些缺陷,就是popout的内容必须在a标签内

iframe 跨域自适应 纯css解决方法

<style type="text/css">body{background:#f00;}body, html,#ifm1{width:100%;height:100%;overflow:hidden;margin:0;}#ifm1{width:100%;height:100%;overflow:hidden;margin:0;}</style><iframe id="ifm1" src='http://www.csdn.net' fr

纯css icon

周末闲着比较无聊,所以用纯css的方法画了4个常见的icon,虽然不太好看,而且代码比较多,但是可以当作是一个兴趣,慢慢玩,div比较多,其实可以用伪类:before和:after替换的,为了实现悬停变色,我外面包了一层a标签. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS icon&l

三种纯CSS方法实现等高列

在这篇文章里, 我会介绍三种使用纯css的方式来实现等高列的方法.在网页布局中设置列等高是比较常见的, 所以写这篇文章就是要总结下一些优雅的纯CSS解决方案. 插图自己弄得,不喜莫喷 哈哈.. 下面介绍的三种方法都只用到了CSS , 不涉及jQuery.JavaScript计算实现的方法,所以我把它这篇文章标题设为:三种纯CSS方法实现等高列. 方法-1: 使用Margins, Paddings和 Overflow来实现 第一种方法使用margins, paddings和overflow来迫使列

三种纯CSS实现三角形的方法

看到像上图这样的 tip 的小三角,你会怎么办? 切个图上去?恩,不错,简单,兼容性也一级棒,不但好控制,那点小东西也增加不了多少图片的大小.但有没有更好更讲究技巧的办法呢?哈哈,那必须有啊,而且还不止一种呢:) 纯 CSS 做三角形的方法,目前我知道三种,分别是利用 border 属性,“◆”字符,和 CSS3 transfrom 做 45 度旋转实现的,CSS3的方法是在码头哥的博客上学到的,很感谢你们的分享,前端有你们更精彩! 1.利用 border 属性实现三角形 这个原理很简单,我我们

纯CSS无hacks的跨游览器多列布局

利用纯CSS创建一个等高多列的布局并不件易事,本教程将着重分析出现在多列布局的多个问题,然后为大家等来一个简单全游览器通吃的解决方法,不使用图片,脚本,CSS hacks并在最严格的XHTML 规范中都能通过验证. 问题的症结所在 如上图所示,由于各列的内容不一致导致其背景的高度也不统一.而背景实质上是内容(标准的盒子模型是由内容区,补白区,边框区与边界区组成,背景存在于前三者中:IE为前两者)的自适应的问题.再转化一下,如何撑大那些较短的列的高度,让所有列的高度等于最高的列的高度?这个,的确很

纯css实现的三级水平导航菜单

vscode练习使用开发纯css的三级水平导航菜单.先上图: 1.html5布局 1 <html> 2 3 <head> 4 <meta charset="UTF-8"> 5 <title>水平导航菜单</title> 6 <link rel="stylesheet" href="reset.css"> 7 <link rel="stylesheet"

【转】纯CSS写三角形-border法[晋级篇01]

(1)有边框的三角形 我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要用到其他办法. 最容易想到的,是叠加层.思路是将两个三角形叠加在一起,外层三角形稍大一些,颜色设置成边框所需的颜色:内层三角形绝对定位在里面.整体就能形成带边框三角形的假象. 这里就涉及到一个绝对定位的问题,上.下.左.右四种方向的三角形相对于父级定位是不同的.首先我们来看下,当定位都为0(left

less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)

前端技术众多,作为一名前端工程师,我们每接触新技术首先要懂得此技术的优势和劣势,这是最基本的.往深入了说还需要懂得技术的应用场景,与之配合的技术等,方便为以后架构做准备.而less作为一门CSS预处理语言,拥有函数式变成的特点,主要优点就是高效.主要适用于包含众多CSS的大型项目.主要体现在:项目公共样式的定义,如页面主色.固定数值(宽.高.时间等).公用样式模板.封装省略浏览器兼容前缀的函数等. 1.less的两种使用方式 1.1 直接调用需要引入less.js,和less样式文件,需要注意的