首页 > 其他分享 >实现一个stick-footer布局

实现一个stick-footer布局

时间:2024-12-05 09:23:37浏览次数:4  
标签:body flex footer 布局 height stick main

实现 stick-footer 布局,也就是让页脚始终贴在页面底部,即使内容不足以撑满整个视口高度。以下是几种常见的实现方法,并附带代码示例:

1. Flexbox 布局:

这是现代前端最推荐的 stick-footer 实现方式,简洁且兼容性好。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Stick Footer with Flexbox</title>
  <style>
    body {
      display: flex;
      flex-direction: column;
      min-height: 100vh; /* 关键:确保 body 至少占据整个视口高度 */
      margin: 0;
    }
    main {
      flex: 1; /* 关键:让 main 内容占据剩余空间 */
    }
    footer {
      background-color: #f0f0f0;
      padding: 20px;
    }
  </style>
</head>
<body>
  <main>
    <h1>Main Content</h1>
    <p>This is the main content of the page.</p>
  </main>
  <footer>
    <p>This is the footer.</p>
  </footer>
</body>
</html>

关键点:

  • body { display: flex; flex-direction: column; min-height: 100vh; }: 将 body 设置为 flex 容器,垂直排列,并确保其最小高度为视口高度。
  • main { flex: 1; }: 让 main 元素占据剩余空间,将 footer 推到底部。

2. Grid 布局:

Grid 布局也能轻松实现 stick-footer,与 Flexbox 类似。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Stick Footer with Grid</title>
  <style>
    body {
      display: grid;
      min-height: 100vh;
      grid-template-rows: 1fr auto; /* 关键:1fr 占据剩余空间,auto 自适应 footer 高度 */
      margin: 0;
    }
    main {

    }
    footer {
      background-color: #f0f0f0;
      padding: 20px;
    }
  </style>
</head>
<body>
  <main>
    <h1>Main Content</h1>
    <p>This is the main content of the page.</p>
  </main>
  <footer>
    <p>This is the footer.</p>
  </footer>
</body>
</html>

关键点:

  • grid-template-rows: 1fr auto;: 1fr 使 main 占据剩余空间,auto 使 footer 自适应高度。

3. 绝对定位/负边距 (较旧的方法,不推荐):

这种方法需要一些技巧,并且在某些情况下可能不如 Flexbox 和 Grid 灵活。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Stick Footer with Positioning</title>
  <style>
    html, body {
      height: 100%;
      margin: 0;
    }
    .wrapper {
      min-height: 100%;
      position: relative;
    }
    main {
      padding-bottom: 50px; /* footer 的高度 */
    }
    footer {
      position: absolute;
      bottom: 0;
      width: 100%;
      height: 50px;
      background-color: #f0f0f0;
      padding: 20px;
    }
  </style>
</head>
<body>
  <div class="wrapper">
    <main>
      <h1>Main Content</h1>
      <p>This is the main content of the page.</p>
    </main>
    <footer>
      <p

标签:body,flex,footer,布局,height,stick,main
From: https://www.cnblogs.com/ai888/p/18587760

相关文章

  • 写页面布局时你有考虑过分辨率因素吗?还要考虑哪些因素呢?
    是的,在写前端页面布局时,分辨率是必须考虑的重要因素之一。还要考虑以下因素:1.屏幕尺寸和分辨率:不同设备的屏幕尺寸差异巨大:从小型智能手表到大型桌面显示器,需要确保布局在各种屏幕尺寸下都能正常显示。分辨率的多样性:即使屏幕尺寸相同,分辨率也可能不同,这会影响元素的......
  • 说说你对网格布局的理解
    在前端开发中,网格布局(GridLayout)是一种强大的二维布局系统,它将网页划分成由行和列组成的网格,允许开发者精确定位和排列元素。相比于传统的浮动布局和Flexbox,Grid布局更擅长处理复杂的、二维的页面结构。我的理解可以概括为以下几点:1.核心概念:网格容器(GridContainer):应用......
  • 列举几种多列等高布局的方法
    前端开发中实现多列等高布局的方法有很多,以下是几种常见的方法:1.Flexbox:这是现代布局中最推荐使用的方法,简单灵活且兼容性好。.container{display:flex;/*启用Flexbox布局*/align-items:stretch;/*垂直拉伸项目以填充容器*/}.column{/*其他样式*/......
  • 你知道什么是粘性布局吗?
    是的,我知道什么是粘性布局(StickyPositioning)。在前端开发中,粘性定位是一种CSS布局方式,它允许元素在滚动时“粘”在视口中。它结合了相对定位(relative)和固定定位(fixed)的特点。具体来说,粘性定位的工作原理如下:初始表现:元素最初会像position:relative;一样,在文档流中占据......
  • 列举几种瀑布流布局的方法
    前端开发中实现瀑布流布局的方法主要有以下几种:1.基于定位的瀑布流(AbsolutePositioning)原理:计算每个元素的位置,并使用position:absolute;配合top和left属性进行定位。优点:简单易懂,实现起来比较快速。缺点:性能较差,尤其是在元素数量较多时,重新计算位置......
  • 编写一个布局,让文字环绕在图片的周围
    有多种方法可以实现文字环绕图片的效果,以下是几种常见且有效的布局方案,并附带代码示例:1.使用float属性:这是最常用的方法,简单易懂。<divclass="container"><imgsrc="image.jpg"alt="Image"class="float-left"><p>这是一些环绕在图片周围的文字。这是一些环绕在图......
  • Linux内存布局
    目录在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。在mm_struct结构体中,存储着进程各个内存段的开始以及结尾,如下图所示;这......
  • layui:页面布局
    (栅格系统与后台布局)如你所愿,在layui2.0的版本中,我们加入了强劲的栅格系统和后台布局方案,这意味着你终于可以着手采用layui排版你的响应式网站和后台系统了。layui的栅格系统采用业界比较常见的12等分规则,内置移动设备、平板、桌面中等和大型屏幕的多终端适配处理,最低能......
  • Flex 布局教程
    一、Flex布局是什么?Flex是FlexibleBox的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。.box{display:flex;}行内元素也可以使用Flex布局。.box{display:inline-flex;}Webkit内核的浏览器,必须加上-webk......
  • 在ArkTS中,如何优化布局以提高性能?
    大家好,我是V哥。在鸿蒙原生应用开发中,当一个复杂的界面加载数据或发生变化时,布局可能会发生调整,为了提高布局变化带来的性能问题,V哥在实际开发中,总结了一些优化技巧,来提高布局性能,笔记分享给大家。1.避免不必要的二次布局在Flex布局中,如果子组件的主轴尺寸总和不等于容器的......