Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 980|回复: 0

解决Web开发HTML页面中footer保持在页面底部问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-17 04:22:41 | 显示全部楼层 |阅读模式

    如图所示如何实现footer在内容不足或者浏览器窗口变大变小的时候一直保持在底部呢?请看如下两种解决方案。

    第一种方案:

    footer高度固定+绝对定位 (兼容性比较好完美兼容IE8+)
    思路:footer的父层的最小高度是100%,footer设置成相对于父层位置绝对(absolute)置底(bottom:0),父层内要预留(padding-bottom)footer的高度。

    HTML

    <div class="wrapper">
        <div class="header">头部</div>
        <div class="main">内容</div>
        <div class="footer">底部</div>
    </div>

    CSS

    *{
        margin: 0;
        padding: 0;
    }
    html,body{
        height: 100%;
    }
    .wrapper{
        /*保证footer是相对于container位置绝对定位*/
        position:relative;  
        width:100%;
        min-height:100%; 
        /*设置padding-bottom值大于等于footer的height值,以保证main的内容能够全部显示出来而不被footer遮盖;*/  
        padding-bottom: 100px;  
        box-sizing: border-box;
    }
    .header{
        width: 100%;
        height: 200px;
        background: #999;
    }
    .main{
        width: 100%;
        height: 200px;
        background: orange;
    }
    .footer{
        width: 100%;
        height:100px;   /* footer的高度一定要是固定值*/ 
        position:absolute;
        bottom:0px;
        left:0px;
        background: #333;
    }

    如果在main区域设置了浮动啥的你会发现footer固定在页面可视区的底部,且覆盖在内容上,这时候只要在footer的父元素样式上增加(overflow : hidden;)即可;

    第二种方案:

    采用 flexbox布局模型 
    思路:我们将 body 的 display 属性设置为 flex, 然后将方向属性设置为列, (默认是行,也就是横向布局);同时,将html 和 body 元素的高度设置为100%,使其充满整个屏幕。 
    HTML

    <div class="wrapper">
        <div class="header">头部</div>
        <div class="main">内容</div>
        <div class="footer">底部</div>
    </div>

    CSS
    我们需要调整各个区域占用的页面空间,我们将通过flex 属性来达到这一目的,该属性实际包含了三个属性,分别是:
    (1)flex-grow:元素在同一容器中对可分配空间的分配比率,及扩展比率;
    (2)flex-shrink:如果空间不足,元素的收缩比率;
    (3)flex-basis:元素的伸缩基准值;

    *{
        margin: 0;
        padding: 0;
    }
    html,body{
        height: 100%;
    }
    .wrapper{
        display: flex;
        flex-direction: column;
        height: 100%;
    }
    .header{
        background: #999;
        flex: 0 0 auto;
    }
    .main{
        background: orange;
        flex: 1 0 auto;
    }
    .footer{
        background: #333;
        flex: 0 0 auto;
    }

     

    原文链接:https://blooo.cn/article/10

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 19:39 , Processed in 0.054791 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表