Sticky Footer绝对底部的实现

本文介绍如何使用HTML和CSS实现StickyFooter布局效果,确保页面底部元素始终处于视窗底部,即使内容变化也不会与正文重叠。提供两种方法:传统CSS布局及更简洁的CSS3 calc()函数方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sticky Footer绝对底部的实现

  介绍一下如何用实现Sticky Footer绝对底部。

  目录:


问题

  有时候,我们在移动端想实现这样的一个效果:当页面的内容不够多的时候,我们希望底部的部件一直能位于窗口的底部,当页面内容足够多的时候,底部的部件能被内容挤下去,不会和正文内容重叠覆盖。这就是Sticky Footer绝对底部。


解决方案

<div id="content">content</div>
<div id="footer">footer</div>

假设我们一开始的布局时这样的,内容部分和底部部分,那么为了实现绝对底部,我们首先需要在内容部分加一层 div ,就像这样:

div id="wrap">
    <div id="content">content</div>
</div>
<div id="footer">footer</div>

然后给他们加上实现绝对底部的样式:

html,body {
  height: 100%;
}

body > #wrap {
    height: auto; 
    min-height: 100%;
}

#content {
  /* padding-bottom 等于 footer 的高度 */
  padding-bottom: 50px;
}

#footer {
  position: relative;
  width: 100%;
  height: 50px;
  /* margin-top 为 footer 高度的负值 */
  margin-top: -50px;
  clear:both;
}

形成如下所示的布局:
  StickyFooter布局

需要注意的是,现在 wrap 和 footer 是同一级的
其实原理很简单,我们给内容区域设置 min-height: 100%,将 footer 挤到屏幕下方,然后给 footer 添加 margin-top,其值为 footer 高度的负值,就能让 footer 又回到屏幕底部!
这样,就实现了Sticky Footer绝对底部。


效果展示

(body背景色为灰色,content背景色为黄色,底部背景色为绿色)
一开始,内容区域内容偏少的时候:
  内容偏少时
我们可以看到一个关闭按钮还是在底部的。
然后当内容足够多的时候:
  内容足够多时
我们可以看到,底部的关闭按钮已经被挤下去了!
我们把滚动条滚下看看:
  滚动条往下
这时候,我们就可以看到底部的关闭按钮了。


另一种更加简单的解决方案 (CSS3)

上面的方法的确有点麻烦,其实我们可以通过 CSS3calc() 函数来实现绝对底部。

//html代码
<div id="content">content</div>
<div id="footer">footer</div>

//css代码
#content {
    min-height: calc(100% - 50px);
    /* 减去的高度为footer的高度 */
}  
#footer {
    height: 50px;
}

我们可以看看它的布局方式:
  使用calc()实现
就是这么简单,我们使用 CSS3 的 calc() 函数,我们把内容区域的最小高度(min-height)设置为100%减去底部 footer 的高度,显而易见,这样当内容部分不够多的时候,它的高度为最小高度,加上底部部分就刚好是屏幕的总高度了!这样就实现了 Sticky Footer 绝对底部效果。
当然,值得注意的是,因为 calc() 是CSS3的一个新增功能,所以在浏览器的兼容性上可能会有问题

CSS3 的 calc() 函数允许我们在写CSS代码的时候通过计算来决定一个 CSS 属性的值。(关于 CSS3 的 calc() 函数的知识可以看看这里)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值