详解Sticky Footer 绝对底部的两种套路

下面是详解Sticky Footer 绝对底部的两种套路的完整攻略。

一、Sticky Footer的概念

在网页设计中,Sticky Footer指的是网页底部一直贴在视口底部,并且在网页内容过短时也不会出现在视口中的一种解决方案。此外,Sticky Footer还需要保证在网页内容过长时,能够让滚动条正常滚动,即不会被遮挡。

二、套路一:用flex实现

这种套路的主要思路是:

  • 用flex将网页中的容器撑满整个视口;
  • 将网页中的主要内容放在一个flex-grow的容器中,并撑满整个视口;
  • 将网页底部的内容放在一个高度为0的容器中,最后通过margin-top将其推到视口底部。

实现代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Sticky Footer Flex实现</title>
    <style type="text/css">
        body {
            height: 100%;
            display: flex;
            flex-direction: column;
        }
        .main {
            flex-grow: 1;
            background-color: #ccc;
        }
        .footer {
            height: 0;
            margin-top: auto;
            background-color: #333;
            color: #fff;
            text-align: center;
            width: 100%;
        }
    </style>
</head>
<body>
    <div class="main">
        <!-- 网页中的主要内容 -->
    </div>
    <div class="footer">
        <!-- 网页底部的内容 -->
    </div>
</body>
</html>

该代码中,使用了display: flex来将网页全部撑满整个视口;使用了flex-grow: 1来将主要内容的容器撑满整个视口;使用了margin-top: auto来将尾部内容推到视口底部。

三、套路二:用grid实现

这种套路的主要思路是:

  • 用grid将网页分为两行:第一行放置主要内容,第二行放置网页底部;
  • 将第二行的高度设置为0,并使用 grid-row: 2来定位到视口底部。

实现代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Sticky Footer Grid实现</title>
    <style type="text/css">
        body {
            height: 100%;
            display: grid;
            grid-template-rows: auto 0;
            grid-template-areas:
                "main"
                "footer";
        }
        .main {
            grid-area: main;
            background-color: #ccc;
            height: 100%;
        }
        .footer {
            grid-area: footer;
            background-color: #333;
            color: #fff;
            text-align: center;
            width: 100%;
            height: 0;
            grid-row: 2;
        }
    </style>
</head>
<body>
    <div class="main">
        <!-- 网页中的主要内容 -->
    </div>
    <div class="footer">
        <!-- 网页底部的内容 -->
    </div>
</body>
</html>

该代码中,使用了display: grid和grid-template-rows将网页分为两行;使用grid-area将主要内容和底部容器定位到相应的位置;使用grid-row: 2将底部容器定位到视口底部。

四、示例说明

下面,我将通过两个示例来说明如何使用以上的两种套路:

示例一

网页中的主要内容包括一个固定高度的头部和一个主体区域,主体区域中的内容比较少,底部需要放置一个版权信息区域,版权信息需要保证在视口底部。

该示例可以使用flex套路来实现。具体实现代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Sticky Footer示例一</title>
    <style type="text/css">
        body {
            height: 100%;
            display: flex;
            flex-direction: column;
        }
        .header {
            height: 100px;
            background-color: #ccc;
        }
        .main {
            flex-grow: 1;
            background-color: #ddd;
            display: flex;
            flex-direction: column;
        }
        .footer {
            height: 60px;
            margin-top: auto;
            background-color: #333;
            color: #fff;
            text-align: center;
            width: 100%;
        }
    </style>
</head>
<body>
    <div class="header"></div>
    <div class="main">
        <!-- 主体内容 -->
    </div>
    <div class="footer">版权信息</div>
</body>
</html>

其中,网页被分为了三个部分:头部、主体和底部。主体部分使用了flex实现。

示例二

网页中的主要内容包括一个固定高度的头部和一个较长的主体区域,主体区域中有一个按钮,当按钮被点击时,会在主体区域中动态添加一些内容。底部需要放置一个版权信息区域,版权信息需要保证在视口底部。

该示例可以使用grid套路来实现。具体实现代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Sticky Footer示例二</title>
    <style type="text/css">
        body {
            height: 100%;
            display: grid;
            grid-template-rows: 100px auto 0;
            grid-template-areas:
                "header"
                "main"
                "footer";
        }
        .header {
            grid-area: header;
            background-color: #ccc;
        }
        .main {
            grid-area: main;
            background-color: #ddd;
            position: relative;
        }
        .button {
            position: absolute;
            top: 10px;
            left: 10px;
            padding: 10px;
            background-color: #333;
            color: #fff;
            cursor: pointer;
            z-index: 2;
        }
        .content {
            position: relative;
            z-index: 1;
        }
        .footer {
            grid-area: footer;
            background-color: #333;
            color: #fff;
            text-align: center;
            width: 100%;
            height: 0;
            grid-row: 3;
        }
    </style>
</head>
<body>
    <div class="header"></div>
    <div class="main">
        <div class="button">添加内容</div>
        <div class="content">
            <!-- 主体内容 -->
        </div>
    </div>
    <div class="footer">版权信息</div>
    <script>
        //按钮点击事件,添加内容
        document.querySelector('.button').addEventListener('click', function() {
            let content = document.createElement('div');
            content.innerHTML = '这是新添加的内容';
            document.querySelector('.content').appendChild(content);
        });
    </script>
</body>
</html>

其中,网页被分为了三个部分:头部、主体和底部。主体部分使用了grid实现,并且在其中动态添加了新的内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Sticky Footer 绝对底部的两种套路 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • vue2中使用sass并配置全局的sass样式变量的方法

    下面是详细讲解“vue2中使用sass并配置全局的sass样式变量的方法”的攻略: 1. 安装依赖 首先,需要安装sass-loader、node-sass和sass-resources-loader这三个依赖: npm install sass-loader node-sass sass-resources-loader –save-dev 其中,sas…

    css 2023年6月9日
    00
  • HTML table鼠标拖拽排序功能

    下面是关于”HTML table鼠标拖拽排序功能”的完整攻略。 一、原理说明 在HTML表格中添加鼠标拖拽排序功能,本质上是通过监听鼠标在表格中的操作事件,动态调整表格中行或列的位置。 其中,主要的步骤可以分为以下几点: 监听鼠标操作事件,包括鼠标按下、鼠标移动、鼠标松开等事件; 在鼠标按下时,记录当前鼠标所在行或列的位置信息,包括其所在的表格、行或列号,以…

    css 2023年6月10日
    00
  • 详解常用css样式(布局)

    以下是关于“详解常用CSS样式(布局)”的完整攻略,包含两个示例说明。 常用CSS样式(布局) CSS是一种用于网页设计的样式表语言,它可以控制网页的布局、颜色、字体等方面。以下是一些常用的CSS样式(布局): 1. 盒模型 盒模型是CSS布局中的基本概念,它将每个HTML元素看作一个矩形盒子,包括内容区域、内边距、边框和外边距。可以使用CSS的box-si…

    css 2023年5月18日
    00
  • 浅谈Emergence.js 检测元素可见性的 js 插件

    下面我来为您详细讲解“浅谈Emergence.js 检测元素可见性的 js 插件”的完整攻略。 什么是 Emergence.js? Emergence.js 是一个用于检测元素可见性的 JavaScript 插件。利用 Emergence.js,我们可以在元素进入或离开视口时执行自定义回调函数。它主要应用于以下场景: 图片的懒加载 AJAX 请求的惰性加载 …

    css 2023年6月10日
    00
  • css水平居中的各种方法总结(推荐)

    当我们需要将某个元素水平居中时,常常会遇到一些问题,比如不知道该使用哪种方式才能最简洁、易懂地实现,或者在不同场景下要使用不同的方法。下面我们将介绍几种常用的CSS水平居中的方法,以方便大家在实际开发中使用。 居中的基本原则 在介绍具体的居中方法之前,首先需要了解的是居中的基本原则。要水平居中一个元素,需要满足以下三个条件之一: 目标元素的宽度已知 目标元素…

    css 2023年6月10日
    00
  • css选择器_动力节点Java学院整理

    CSS选择器_动力节点Java学院整理 一、什么是CSS选择器 CSS选择器是CSS中用于选择要应用样式的HTML元素的方式。 在CSS中,选择器是指定要应用样式的特定HTML元素的标识符。通过使用CSS选择器,您可以选择要应用样式的HTML元素,从而更改它们的外观。 二、常用的选择器类型 1.元素选择器 元素选择器会选择指定类型的所有元素。示例代码如下: …

    css 2023年6月9日
    00
  • 纯css实现窗户玻璃雨滴逼真效果

    下面是“纯css实现窗户玻璃雨滴逼真效果”的完整攻略。 1. 准备工作 首先需要准备一个窗户的图片和一张雨滴的PNG图像。这里推荐使用透明背景的PNG图片,以便后续的操作。 2. HTML结构 设置好HTML结构,可以使用<div>元素来包裹图片,并通过CSS设置它的尺寸和相对位置。同时,我们在这个<div>元素中增加一个<di…

    css 2023年6月11日
    00
  • js鼠标移动时禁止选中文字

    要在JS中实现当鼠标移动到元素上时禁止选中文字,我们可以通过设置CSS属性user-select来实现。该属性控制用户是否可以选中文本。当设置为none时,用户无法选中文本。 以下是完整的实现步骤。 1. 定义CSS样式 我们需要定义CSS样式来禁止用户选择文本。在元素的样式中,我们将user-select属性设置为none。以下是一个示例: .nosele…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部