加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

CSS中让底部自动贴底实现方案

发布时间:2023-10-24 15:03:37 所属栏目:语言 来源:
导读:在 UI 切图过程中,页面往往由三个部分组成,头部、内容和底部。当页面的内容高度不够撑满屏幕,底部(footer)就跟着内容浮动上来了,小屏幕由于高度有限看不出来异常,但如果是大屏的话,底部下面变会多出很多空白
在 UI 切图过程中,页面往往由三个部分组成,头部、内容和底部。当页面的内容高度不够撑满屏幕,底部(footer)就跟着内容浮动上来了,小屏幕由于高度有限看不出来异常,但如果是大屏的话,底部下面变会多出很多空白,非常影响美观。
 
方案 1:Flex-Box
 
头部使用 position: sticky; 吸顶,再使用盒子( main )来包住内容( container > content )和底部( footer ),这个盒子设置最小高度为除头部外的剩余屏幕高度: min-height: calc(100vh - 50px); ,盒子里面使用弹性布局( flex: 1 1 auto; )让内容区域自动撑开,而底部保持不变( flex: 0 0 auto; ),这样就有了 内容不够时底部自动吸底,内容足够时底部自动下移 的效果。
 
示例:
 
<html>
 
  <head>
 
    <title>CSS 实现底部(footer)贴底 - 方案 1:Flex-Box</title>
 
    <style>
 
      body {
 
        margin: 0;
 
      }
 
      header {
 
        height: 50px;
 
        background: #20c997;
 
        position: sticky;
 
        top: 0;
 
      }
 
      main {
 
        display: flex;
 
        flex-flow: column nowrap;
 
        min-height: calc(100vh - 50px);
 
      }
 
      .container {
 
        flex: 1 1 auto;
 
      }
 
      .content {
 
        background: #0d6efd;
 
      }
 
      footer {
 
        flex: 0 0 auto;
 
        background: #fd7e14;
 
      }
 
    </style>
 
  </head>
 
  <body>
 
    <!--头部-->
 
    <header>
 
      header
 
    </header>
 
    <main>
 
      <div class="container">
 
        <!--内容-->
 
        <div class="content">
 
          content
 
        </div>
 
      </div>
 
      <!--底部-->
 
      <footer>
 
        footer
 
      </footer>
 
    </main>
 
  </body>
 
</html>
 
在线演示: https://codepen.io/mazeyqian/pen/rNeymdG
 
优点:底部高度可自由撑开。
 
缺点:低版本浏览器有兼容性(Flex-Box & Calc)问题。
 
方案 2:底部负距离 margin
 
内容区设置最小高度铺满页面,然后底部设置等高的负距离 margin 。
 
示例:
 
<html>
 
  <head>
 
    <title>CSS 实现底部(footer)贴底 - 方案 2:底部负距离 `margin`</title>
 
    <style>
 
      body {
 
        margin: 0;
 
      }
 
      header {
 
        height: 50px;
 
        background: #20c997;
 
        position: sticky;
 
        top: 0;
 
      }
 
      .container {
 
        min-height: calc(100vh - 50px);
 
      }
 
      .content {
 
        background: #0d6efd;
 
      }
 
      footer {
 
        height: 50px;
 
        margin-top: -50px;
 
        background: #fd7e14;
 
      }
 
    </style>
 
  </head>
 
  <body>
 
    <!--头部-->
 
    <header>
 
      header
 
    </header>
 
    <div class="container">
 
      <!--内容-->
 
      <div class="content">
 
        content
 
      </div>
 
    </div>
 
    <!--底部-->
 
    <footer>
 
      footer
 
    </footer>
 
  </body>
 
</html>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章