【学习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区域不能自动高度填充 

相关推荐

  1. footer置于页面底部

    2024-07-11 20:08:01       44 阅读
  2. CSS】初学轻松学会使用Flex布局

    2024-07-11 20:08:01       38 阅读
  3. CSS-Flex布局

    2024-07-11 20:08:01       37 阅读
  4. css flex布局详解

    2024-07-11 20:08:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 20:08:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 20:08:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 20:08:01       58 阅读
  4. Python语言-面向对象

    2024-07-11 20:08:01       69 阅读

热门阅读

  1. Perl 语言入门很简单

    2024-07-11 20:08:01       20 阅读
  2. 华为机考真题 -- 精准核酸检测

    2024-07-11 20:08:01       22 阅读
  3. 练习题答案

    2024-07-11 20:08:01       17 阅读
  4. padStart方法用来格式化数据

    2024-07-11 20:08:01       21 阅读
  5. 视觉图像面积计算

    2024-07-11 20:08:01       15 阅读