使用CSS定位页面的“footer”

2016-02-19 19:45 12 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享使用CSS定位页面的“footer”吧。

【 tulaoshi.com - Web开发 】

  基本思路

  首先考虑外层设置一个容器 div ,id 设为 #container ,使他的高度为浏览器窗口的高度,然后将 #footer 这个 div 设置为 #container 的子 div,并使用绝对定位的方式,使他固定到 #container 的底端,以实现希望的效果。

  点击这里察看案例页面效果。 改变浏览器的高度和宽度,可以看到 Footer 部分的效果。

  代码实现

  下面先考虑HTML结构,这个演示页面的HTML代码非常简单。

div id="container"
div id="content"
h1Content/h1
p请改变浏览器窗口的高度,以观察footer效果。/p
p这里是示例文字,………,这里是示例文字。/p
/div
div id="footer"
h1Footer/h1
/div
/div

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

然后设置CSS,

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

body,html {
margin: 0;
padding: 0;
font: 12px/1.5 arial;
height:100%;
}
#container {
min-height:100%;
position: relative;
}
#content {
padding: 10px;
padding-bottom: 60px;
/* 20px(font-size)x2(line-height) + 10px(padding)x2=60px*/
}
#footer {
position: absolute;
bottom: 0;
padding: 10px 0;
background-color: #AAA;
width: 100%;
}
#footer h1 {
font: 20px/2 Arial;
margin:0;
padding:0 10px;
}

  1:首先要给 html 和 body 元素设置高度(height属性)为100% (第5行),这样先保证根元素的高度撑满整个浏览器窗口,然后下面才能使 #container 的高度撑满整个浏览器窗口。至于为什么用同时设置 html 和 body 元素,是因为 Firefox 和 IE 认为的根元素不一样,因此这里都给他们设置上。

  2:然后把 #container 的高度也设置为 100% (第8行),但是要注意,这里使用了“min-height”属性,而不是普通的 height 属性,这是因为我们要考虑到,如果 #content 中的内容如果增加了,他的高度超过了浏览器窗口的高度,那么如果把 #container 的高度仍然是 100%,就会导致 #footer 仍然定位在浏器窗口的下端,从而遮盖了 #content 中的内容。而使用 min-height 属性的作用就是使 #container 的高度“至少”为浏览器窗口的高度,而当如果它里面的内容增加了,他的高度会也跟随着增加,这才是我们需要的效果。

  但是需要说明的是,在 Firefox 和 IE7 中,支持 min-height 属性,而 IE6 中,并不支持 min-height 属性,但是“歪打正着”的是,IE6 中,会把 min-height 属性解释为 height 属性,但是 IE6 中 height 属性的效果却是 min-height 本来应该具有的效果,也就是说,在 IE6 中,子 div 的高度会撑大父 div 的高度。所以这样正好可以实现在 IE6、IE7 和 Firefox 中都可以正确实现我们希望的效果了。

  3:接下来,将 #container 设置为相对定位(第9行),目的是使他成为它里面的 #footer 的定位基准,也就是所谓的“最近的定位过的祖先元素”。

  4:然后把 #foooter 设置为绝对定位(第17行),并使之贴在 #container 的最下端(第18行)。

  5:但是要注意,如果当我们把 #foooter 贴在 #container 的最下端以后,他实际上已经和上面的 #content 这个div 重叠了,为了避免覆盖 #content 中的内容,我们在 #contetn 中设置了下侧的 padding,使 padding-bottom 的值等于 #footer 的高度(第13行),就可以保证避免覆盖 #content 的文字了,这个高度的计算注意代码中的注释中给出的计算方法(第14行)。

来源:http://www.tulaoshi.com/n/20160219/1621715.html

延伸阅读
标签: Web开发
在很多的主题中都有不止一个CSS文件,这样主要是为了适应不同的浏览器,因为他们在对CSS解释上有些不同。 但有没有想过为某个页面单独使用一个CSS样式表? 首先打开header.php文件,找到如下代码: link rel="stylesheet" href="?php bloginfo('stylesheet_url'); ?" type="text/css" media="screen" / 比如要在某个分类页面使用...
标签: Web开发
在内容不超过一屏的情况下,当浏览器窗口变小那行页脚文字会跟着向上浮动但还是保持在底部。 当内容多出一屏时,他显示在网页的最下边,而不是窗口的最下边;测试了一下,还可以,在IE6、IE7、FF等都没有问题!窗口缩小时也没有问题! 首先是JS脚本: function test(){  var infoHeight = document.getElementById(&quo...
标签: Web开发
使用CSS来定位页面内层的位置,一直是比较难以掌握的事情,很多时候,往往被绝对定位的元素,总是以浏览器的左上角为坐标原点,此时,如果浏览器的大小改变,被定义的层就会偏离设计想要的位置,让人很挠头。 其实,要想控制好层的绝对定位,只要理解CSS中关于定位(position)的定义,一切就会变得轻松简单。 CSS中关于定位...
标签: Web开发
在网站的一些应用中需要提供用户直接打印页面的功能,最明显的就是电子优惠券,商家根据网站提供的模板输入内容,然后生成优惠券页面,用户打印这个页面即是优惠券。 当然最优的做法是根据这个页面生成一个图片文件,用户下载这个图片再去打印,打印的效果就不会受浏览器的设置而受影响打印出来的效果。 但如果由于一些原因,为了快速或者...
标签: Web开发
为了避免ASP程序和HTML代码混写造成维护困难的情况,本文介绍了一种方法,利用模板来分离程序和页面,使程序设计更加轻松。    在使用ASP制作一个站点的时候,常常会出现一个ASP文件中,程序代码和HTML代码混合的情况。这样子做有许多缺点:    1. 且不说编程时就要对页面布局进行设计和编排,造成代码混...

经验教程

569

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部