【学习css1】flex布局-页面footer部分保持在网页底部

中间内容高度不够屏幕高度撑不开的页面时候,页面footer部分都能保持在网页页脚(最底部)的方法

1、首先上图看显示效果

2、奉上源码

2.1、html部分

<body>
  <header>头部</header>
  <main>主区域</main>
  <footer>底部</footer>
</body>

2.2、css部分

<style>
    html, body {
      margin: 0;
      padding: 0;
      width: 100%;
      height: 100%;
    }
    body {
      min-height: 100vh;
      display: flex;
      flex-direction: column;
    }

    header {
      background: aquamarine;
      height: 40px;
      line-height: 40px;
      text-align: center;
    }

    footer {
      margin-top: auto;
      background: aquamarine;
      height: 50px;
      line-height: 50px;
      text-align: center;
    }

    main {
      align-self: center;
      /* 或者使用如下也可实现main区域居中显示 */
      /* margin: 0 auto; */
      background: aqua;
      width: 80%;
    }
  </style>

3、全部代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>flexbox布局</title>
  <style>
    html, body {
      margin: 0;
      padding: 0;
      width: 100%;
      height: 100%;
    }
    body {
      min-height: 100vh;
      display: flex;
      flex-direction: column;
    }

    header {
      background: aquamarine;
      height: 40px;
      line-height: 40px;
      text-align: center;
    }

    footer {
      margin-top: auto;
      background: aquamarine;
      height: 50px;
      line-height: 50px;
      text-align: center;
    }

    main {
      align-self: center;
      background: aqua;
      width: 80%;
    }
  </style>
</head>
<body>
  <header>头部</header>
  <main>主区域</main>
  <footer>底部</footer>
</body>
</html>

 4、原理

1、首先,我们确保 body 元素至少会拉伸到屏幕的整个高度 min-height: 100vh 。如果内容较短(某些移动浏览器除外),这不会触发溢出,并且它将允许内容根据需要继续拉伸高度。

2、设置 flex-direction: column 在保留堆叠块元素方面保持正常文档流的行为(假设所有 body 块元素的直接子元素确实都是块元素)。

3、flexbox 的优势在于利用该 margin: auto 行为。这个奇怪的伎俩将导致边距填充它所设置的项目与其在相应方向上最近的兄弟姐妹之间的任何空间。设置 margin-top: auto 会有效地将页脚推到屏幕底部。 

5、缺陷

main区域不能自动高度填充 

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个简单的网页布局代码,使用了 DIV-CSS 布局方式: ```html <!DOCTYPE html> <html> <head> <title>我的网页</title> <style> body { margin: 0; padding: 0; } header { background-color: #ccc; height: 100px; } nav { background-color: #333; height: 50px; color: #fff; display: flex; justify-content: space-between; align-items: center; padding: 0 20px; } nav a { color: #fff; text-decoration: none; font-size: 18px; margin: 0 10px; } section { display: flex; flex-wrap: wrap; max-width: 1200px; margin: 0 auto; padding: 20px; } article { flex-basis: 60%; background-color: #f5f5f5; padding: 20px; margin-right: 20px; margin-bottom: 20px; } aside { flex-basis: 30%; background-color: #ddd; padding: 20px; margin-bottom: 20px; } footer { background-color: #ccc; height: 50px; text-align: center; padding-top: 20px; } </style> </head> <body> <header> <h1>我的网页</h1> </header> <nav> <a href="#">首页</a> <a href="#">新闻</a> <a href="#">关于我们</a> <a href="#">联系我们</a> </nav> <section> <article> <h2>文章标题</h2> <p>这里是文章内容。</p> </article> <aside> <h3>侧边栏标题</h3> <p>这里是侧边栏内容。</p> </aside> <article> <h2>文章标题</h2> <p>这里是文章内容。</p> </article> <aside> <h3>侧边栏标题</h3> <p>这里是侧边栏内容。</p> </aside> </section> <footer> <p>版权所有 © 2021 我的网页</p> </footer> </body> </html> ``` 以上代码实现了一个简单的网页布局,包括了一个顶部的 header,一个导航栏 nav,一个主要内容区域 section,以及一个底部footer。在主要内容区域 section 中,使用了两个 article 和两个 aside,实现了左侧内容区域和右侧侧边栏的布局。CSS 中使用了 flex 布局来实现各个元素的排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天才和人才就差了二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值