如何将页脚固定在页面底部

作为一个Web的前端攻城师,在制作页面效果时肯定有碰到下面这种现象:当一个HTML页面中含有较少的内容时,Web页面的“footer”部分随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,让你的页面看上去很不好看,特别是现在宽屏越来越多,这种现象更是常见。那么如何将Web页面的“footer”部分永远固定在页面的底部呢?注意了这里所说的是页脚footer永远固定在页面的底部,而不是永远固定在显示器屏幕的底部,换句话说,就是当内容只有一点点时,Web页面显示在浏览器底部,当内容高度超过浏览器高度时,Web页面的footer部分在页面的底部,总而言之Web页面的footer部分永远在页面的底部,换句说,Footer部分永远沉底。如下图所示:


那么今天主要和大家一起学习如何将页脚固定在页面的底部?

方法一

首先我们来看第一种方法,这种方法是来自于Matthew James Taylor的《How to keep footers at the bottom of the page》。下面我们就一起来看看Matthew James Taylor介绍的方法。

HTML Markup


其实我们可以在div#page增加所需的内容结构,如下所示:


真正来说,实现这页脚永远固定在页面的底部,我们只需要四个div,其中div#container是一个容器,在这个容器之中,我们包含了div#header(头部),div#page(页面主体部分,我们可以在这个div中增加更多的div结构,如上面的代码所示),div#footer(页脚部分)

CSS Code


下面我们一起来看看这种方法的实现原理:

  1. <html>和<body>标签:html和body标签中必须将高度(height)设置为“100%”,这样我们就可以在容器上设置百分比高度,同时需要将html,body的margin和padding都移除,也就是html,body的margin和padding都为0;
  2. div#container容器:div#container容器必须设置一个最小高度(min-height)为100%;这主要使他在内容很少(或没有内容)情况下,能保持100%的高度,不过在IE6是不支持min-height的,所以为了兼容IE6,我们需要对min-height做一定的兼容处理,具体可以看前面的代码,或者阅读Min-Height Fast Hack了解如何解决min-height在Ie6下的bug问题。另外我们还需要在div#container容器中设置一个"position:relative"以便于里面的元素进行绝对定位后不会跑了div#container容器;
  3. div#page容器:div#page这个容器有一个很关键的设置,需要在这个容器上设置一个padding-bottom值,而且这个值要等于(或略大于)页脚div#footer的高度(height)值,当然你在div#page中可以使用border-bottom人水-width来替代padding-bottom,但有一点需要注意,此处你千万不能使用margin-bottom来代替padding-bottom,不然会无法实现效果
  4. 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%",让他在整个页面上得到延伸;
  5. 其他div:至于其他容器可以根据自己需求进行设置,比如说前面的div#header,div#left,div#content,div#right等。

优点:

结构简单清晰,无需js和任何hack能实现各浏览器下的兼容,并且也适应iphone。

缺点:

不足之处就是需要给div#footer容器设置一个固定高度,这个高度可以根据你的需求进行设置,其单位可以是px也可以是em,而且还需要将div#page容器的padding-bottom(或border-bottom-width)设置大小等于(或略大于)div#footer的高度,才能正常运行。

上面就是Matthew James Taylor介绍的如何实现页脚永远固定在页面的底部,如果大家感兴趣可以阅读原文,也可以直接点击这里查看Demo

方法二:

这种方法是利用footer的margin-top负值来实现footer永远固定在页面的底部效果,下面我们具体看是如何实现的。


方法一和方法二有几点是完全相同的,比如说方法一中的1-3三点,在方法二中都一样,换句话说,方法二中也需要把html,body高度设置为100%,并重置margin,padding为0;其二div#container也需要设置min-height:100%,并处理好IE6下的min-height兼容问题;其三也需要在div#page容器上设置一个padding-bottom或border-bottom-width值等于div#footer高度值(或略大于)。那么两种方法不同之处是:

  1. div#footer放在div#container容器外面,也就是说两者是同级关系,如果你有新元素需要放置在与div#container容器同级,那你需要将此元素进行绝对定位,不然将会破坏div#container容器的min-height值;
  2. div#footer进行margin-top的负值设置,并且此值等于div#footer的高度值,而且也要和div#page容器的padding-bottom(或border-bottom-width)值相等。

优点:

结构简单清晰,无需js和任何hack能实现各浏览器下的兼容。

缺点:

要给footer设置固定值,因此无法让footer部分自适应高度。

大家要是对这种方法感兴趣,你也可以浏览一下《CSS Sticky Footer》和《Pure Css Sticky Footer》,或者直接点击Demo查看其源代码。


基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
### 页脚固定页面底部的实现方法 在网页开发中,将页脚(Footer)固定页面底部是一个常见的布局需求。当页面内容较少时,页脚应始终显示在浏览器视口底部;而当内容超出视口高度时,页脚应跟随内容自然延伸至页面底部[^1]。以下是几种常用的实现方法。 #### 使用 Flexbox 实现页脚固定 Flexbox 布局是一种现代且简洁的方式,适用于大多数现代浏览器。通过将 `body` 设置为 `flex` 容器,并利用 `flex-direction: column` 和 `flex: 1` 的特性,可以轻松实现页脚始终位于页面底部。 ```html <body> <div class="content">页面主要内容</div> <footer class="footer">这里是页脚内容</footer> </body> ``` ```css body { display: flex; flex-direction: column; min-height: 100vh; } .content { flex: 1; } .footer { flex-shrink: 0; } ``` 该方法确保 `.content` 区域占据剩余空间,而 `.footer` 始终保持在页面底部,适用于内容较少时的场景[^1]。 #### 使用 CSS Grid 实现页脚固定 CSS Grid 提供了更灵活的布局方式,适用于包含多个区域(如头部、主体、页脚)的页面结构。 ```html <body> <header class="header">头部内容</header> <main class="content">主要内容</main> <footer class="footer">页脚内容</footer> </body> ``` ```css body { display: grid; grid-template-rows: auto 1fr auto; min-height: 100vh; } .header { grid-row: 1; } .content { grid-row: 2; } .footer { grid-row: 3; } ``` 通过定义 `grid-template-rows` 属性,将页面划分为三部分:头部、内容区域和页脚,确保页脚始终位于页面底部[^3]。 #### 使用 `min-height` 和 `calc()` 实现粘性页脚 这是一种经典的粘性页脚实现方式,适用于内容较少时的情况。 ```html <body> <div class="content">页面主要内容</div> <footer class="footer">这里是页脚内容</footer> </body> ``` ```css html, body { height: 100%; margin: 0; } body { display: flex; flex-direction: column; } .content { min-height: calc(100vh - 60px); /* 假设页脚高度为60px */ } .footer { height: 60px; } ``` 通过设置 `.content` 的最小高度为视口高度减去页脚高度,确保内容不足时页脚仍能固定在视口底部[^3]。 #### 使用相对定位实现页脚固定 该方法通过设置页脚为相对定位,并在主容器中添加 `padding-bottom` 来防止内容被页脚遮挡。 ```html <body> <div class="page"> <div class="content">页面主要内容</div> <footer class="footer">这里是页脚内容</footer> </div> </body> ``` ```css .page { min-height: 100vh; position: relative; padding-bottom: 60px; /* 与页脚高度一致 */ } .footer { position: absolute; bottom: 0; width: 100%; height: 60px; } ``` 这种方式适用于需要兼容旧浏览器的场景,但需要注意页脚高度必须为固定值,以便正确设置 `padding-bottom`[^5]。 #### 使用 JavaScript 实现动态页脚定位 在某些复杂场景下,可以借助 JavaScript 动态判断页面内容高度,并调整页脚位置。 ```javascript window.addEventListener('resize', function () { const contentHeight = document.querySelector('.content').offsetHeight; const footer = document.querySelector('.footer'); const windowHeight = window.innerHeight; if (contentHeight + footer.offsetHeight < windowHeight) { footer.style.position = 'fixed'; footer.style.bottom = '0'; } else { footer.style.position = 'static'; } }); ``` 此方法适用于动态内容加载或需要根据视口大小实时调整页脚位置的场景,但通常推荐优先使用 CSS 方法实现[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值