制作网页底部以及<footer>置底

news2024/9/29 22:51:42

目录

前言

页脚置底

页脚置底的几种方法

使用calc()设置内容高度

使用flex布局

将内容部分的margin-bottom改为负值【不推荐】

一个网页底部Demo

HTML部分:

CSS部分:

效果:

其他说明

margin负值特性

下面以一个具体的例子来说明margin为负值的四种情况:

margin-left为负值的情况

margin-right为负值的情况

margin-top为负值的情况

 margin-bottom为负值的情况:

padding为负值

使用margin将一个元素置于屏幕中心

前言

我们制作网页时,少不了会给网页制作底部,用来注明作者信息也好,底部导航栏也好。

最近作者在制作个人网站,制作网页底部踩了不少坑,因此来分享一下经验。

页脚置底

页脚置底(Sticky footer),就是让网页的<footer>部分始终在浏览器底部

当网页内容足够长以至超出浏览器可视高度时,页脚会随着内容被推到网页底部;

但如果网页内容不够长,置底的页脚就会保持在浏览器窗口底部

如下图所示:

页脚置底的几种方法

使用calc()设置内容高度

如果页面是“内容-页脚”结构,如下代码所示:

<div class="content">
  <!-- content -->
</div>
<footer class="footer">footer</footer>

那么,我们就可以使用calc()手动固定内容高度,使内容高度 等于 “整个页面高度 - 页脚高度,这样页脚就被手动固定在底部,但是这个方法有个劣势,需要我们固定“页脚高度”,如果页脚高度不可控或动态,那么这个方法将会破坏界面布局

.content {
  min-height: calc(100vh - 70px);
}
.footer {
  height: 70px;
}

使用flex布局

 如果在页面设计初期,我们就确定:“标题部分-内容部分-页脚部分”三大部分,那么我们可以使用“flex”布局来很方便的固定底部

<div class="content">
  <!-- content -->
</div>
<footer class="footer">footer</footer>

首先,我们将<body>标签改为“flex”布局,并将子元素对齐方式设置为“column”(垂直方向),最后我们将flex-grow的值设置为“1”(如果整个网页有剩余空间,页脚部分则根据内容部分分配,内容部分则占据剩余的空白空间)

html {
  height: 100%;
}
body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}
.content {
  flex: 1;
}

将内容部分的margin-bottom改为负值【不推荐

<div class="wrapper"><!-- content --></div>
<footer class="footer">footer</footer>

我们可以将内容部分的下边界改为负值(大小为页脚的高度),同时将<html><body>高度设置为100%

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
}
.wrapper {
  min-height: 100%;  
  margin-bottom: -50px; /* 等于footer的高度 */
}
.footer, .push {
  height: 50px;
}

一个网页底部Demo

Demo可以复制即用,大家可以自行选用修改

HTML部分:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
	</head>
	<body>
        <div style="min-height: calc(100vh - 150px);"></div>
        <footer>
            <ul>
                <li><a href="/1">首页</a></li>
                <li><a href="/">作品集</a></li>
                <li><a href="/">关于我</a></li>
            </ul>
            <div class="footer-div">
                <span>联系地址:烟台市SDTBU</span>
                <span>邮箱:1600472625@qq.com</span>
                <span>您对网站有任何建议,欢迎联系作者~</span>
                <span>YangYang @ 2024</span>
            </div>
        </footer>		
	</body>
</html>

CSS部分:

body {
    margin: 0px;
}
footer {
	height: 150px;
    background-color: #f5f5f5;
    font-family:Arial, sans-serif;
}

footer > ul {
    display: flex;
    justify-content: center;
    list-style-type: none;
    margin: 0px;
    padding: 0px;
}

footer > ul > li > a {
    margin-top: 40px;
    display: block;
    color: black;
    text-decoration: none;
    width: auto;
    margin: 20px 40px;
}

.footer-div {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
}

.footer-div > span{
    cursor: default;
    color: #666;
    font-size: 0.8rem;;
    display: block;
    margin-bottom: 5px;
    font-weight: 600;
}

效果:

其他说明

margin负值特性

  • margin-left 设置负值,元素自身向左移动,后面的元素也向左移
  • margin-right 设置负值,自身不受影响,右边元素向左移动
  • margin-top 设置负值,元素自身向上移动,下面的元素也向上移
  • margin-bottom 设置负值,自身不受影响,下方元素向上移动

下面以一个具体的例子来说明margin为负值的四种情况:

<style>
  .container {
    width: 100px;
    height: 200px;
    border: 2px solid red;
    margin: 150px auto;
  }
  .box {
    width: 100px;
    height: 100px;
  }
  .box1 {
    /* 背景色为粉色 */
    background-color: rgb(252, 188, 198);
    /* 负值,元素自身向左移动,会影响后面元素位置 */
    margin-bottom: -50px;
  }
  .box2 {
    /* 背景色为天蓝色 */
    background-color: rgb(136, 208, 237, 0.5);
  }
</style>
<body>
  <div class="container">
    <div class="box box1"></div>
    <div class="box box2"></div>
  </div>
</body>

margin-left为负值的情况

margin-right为负值的情况

margin-top为负值的情况

 margin-bottom为负值的情况:

padding为负值

padding不能为负值,如果padding为负值,那么系统会自动会将它与padding为0当做一种情况处理。

使用margin将一个元素置于屏幕中心

margin与绝对定位结合,实现元素置于屏幕中心的效果。

/* 绝对定位 */
position: absolute;
top: 50%;
left: 50%;
/* 向上移动自身宽度一半 */
margin-top: -50px;
/* 向左移动自身宽度一半 */
margin-left: -50px;

先利用绝对定位
让元素的顶部和左侧分别与父元素垂直和水平中间对齐
然后再利用margin负值,让元素向上和向左移动自身宽度的一半
这样就实现了水平和垂直居中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Edge-TTS:微软推出的,免费、开源、支持多种中文语音语色的AI工具[Python代码]

Edge-TTS&#xff0c;由微软推出的这款免费、开源的AI工具&#xff0c;为用户带来了丰富多样的中文语音体验。它不仅支持多种中文语音语色&#xff0c;还能实现流畅自然的语音合成。Edge-TTS凭借其高度可定制化的特点&#xff0c;广泛应用于智能助手、语音播报、教育培训等领域…

加速自动驾驶模型迭代,数据存算一体是关键

自动驾驶的每一个业务阶段都会涉及到 AI 深度学习算法和算力的参与&#xff0c;机器视觉&#xff0c;深度学习&#xff0c;传感器技术等均在自动驾驶领域发挥着重要的作用。自动驾驶系统不断迭代的前提是算法的持续优化&#xff0c;目前&#xff0c;自动驾驶发展的瓶颈主要在于…

【笔记】0基础python学爬虫(未完)

&#xff08;一&#xff09;用requests发送get请求 安装好pycharm&#xff08;跳过&#xff09; 在本地控制台输入pip install requests 安装requests模块 with防止资源浪费 不论f文件有没有执行成功最后都会关闭 请求获取url resp requests.get(url) resp.text获取源代码…

Redis的持久化、主从架构、哨兵高可用架构

目录 1.Redis持久化 1.1 RDB快照 1.2AOF 1.3混合持久化 2.Redis主从架构 2.1主从工作原理 2.1.1全量复制 2.1.2增量复制 3.Redis哨兵高可用架构 3.1哨兵架构模型 3.2哨兵模式的作用 3.3故障转移机制 3.4主节点选举机制 4.Redis管道-pipeline 1.Redis持久化 有两种…

MyBatis-Plus 一、(基础应用)

MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 mybatis 、mybatis-plus 二者区别&#xff1a; MyBatis: 所有SQL语句全部自己写手动解析实…

EPCE-HDR

【GitHub】 【Paper】 摘要 由于相机能力的限制&#xff0c;数字图像通常比真实场景辐射更窄的动态光照范围。为了解决这个问题&#xff0c;高动态范围&#xff08;HDR&#xff09;重建被提出&#xff0c;以恢复动态范围&#xff0c;更好的表示真实世界的场景。然而&#xff0c…

haproxy编译安装

一、haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…

Ubuntu 22.04中MySQL 8 设置忽略大小

Ubuntu 22.04中MySQL 8 设置忽略大小 一、解决完整流程 //根据官网内容说的大概意思就是不能安装完了修改忽略大小写了&#xff0c;只能在初始化的时候做修改。我用的版本是8.0.39//更新软件包 1、sudo apt update //安装MySQL 如果安装了可以忽略这个步骤 2、sudo apt insta…

【计算机三级-数据库技术】数据库及数据库对象

数据库及数据库对象 第一节 创建及维护数据库 一、SQL server数据库分类 1&#xff09;系统数据库&#xff08;系统自动创建&#xff09;&#xff1a; master、msdb、tempdb、model、resource 2&#xff09;用户数据库 保存与用户业务有关的数据。 二、SQL server数据库组成…

【660线代】线性代数一刷错题整理

线代一阶 2024.8.7日 1. 2. 2024.8.8日 1. 2024.8.9日 1. 2. 3. 2024.8.12日 1. 2. 2024.8.13日 1. 2. 3. 2024.8.15日 1. 2. 3. 4. 5. 6. 线代二阶 2024.8.17日 1. 2. 3. 2024.8.18日 1. 至此&#xff0c;660线性代数部分完成。 祝各位一战成硕&#xff01;

鸿蒙关于可以实现滚动效果的容器组件的相关知识

一、滚动的用途 生活中&#xff0c;我们在使用各种APP应用的过程中&#xff0c;总是可以看到一些轮播图、内容页面的滑动、组件切换的效果等&#xff0c;这些都是为了提高用户的体验而设计的功能。在编程中&#xff0c;滚动的用途非常广泛&#xff0c;我们经常用在用户界面的交…

Umi-OCR 文字识别工具

免费开源的离线orc识别功能 git地址 感谢大佬的贡献 Umi-OCR 文字识别工具 使用说明 • 下载地址 • 更新日志 • 提交Bug 免费&#xff0c;开源&#xff0c;可批量的离线OCR软件 适用于 Windows7 x64 、Linux x64 免费&#xff1a;本项目所有代码开源&#x…

C++ 程序寻找通过 2 个点的线(Program to find line passing through 2 Points)

在数学和计算机科学中&#xff0c;找到通过两个点的线的方程是一个基础问题。假设我们有两个点 P1​(x1​,y1​) 和 P2​(x2​,y2​)&#xff0c;我们想要找到通过这两个点的直线方程。 直线方程的形式 直线的方程通常表示为 ymxb&#xff0c;其中 m 是斜率&#xff0c;b 是 …

PMP核心知识点—之项目管理基础

知识点1&#xff1a;项目的临时性 项目的临时性是指项目有明确的开始时间和结束时间&#xff0c;但并不能表示项目的周期短&#xff0c;项目的周期从几个月、几年到几十年都有。 知识点2&#xff1a;项目的独特性 独特的产品、服务或成果。 知识点3&#xff1a;项目创造商业价值…

ARCGIS 纸质小班XY坐标转电子要素面

1、准备好excel 坐标 小班号、点位链接的顺序、X、Y 4个缺一不可&#xff0c;需要注意的是&#xff0c;点位顺序的格式最好为数字&#xff0c;若为其他格式可能会出现排序混乱&#xff0c;会以1-9 11-19等字符串的排序连接。 excel文件转为csv才能识别&#xff0c;CSV只能保留第…

错过了游科的黑神话?别急,国内这些公司也在招聘中,都是做3A游戏的,速来!

近日&#xff0c;由游戏科学工作室打造的3A游戏——《黑神话:悟空》&#xff0c;不仅在国内引起了前所未有的关注&#xff0c;在全球范围内也引发了巨大轰动。 游戏玩家们举国欢庆的同时&#xff0c;无数游戏从业者也点燃了对国产3A游戏的憧憬与期待&#xff01; 据说游科在某…

Java 通用代码生成器光,电音之王尝鲜版八,完善数据库自动反射功能和多对多候选功能

Java 通用代码生成器光&#xff0c;电音之王尝鲜版八&#xff0c;完善数据库自动反射功能和多对多候选功能 Java 通用代码生成器光&#xff0c;电音之王尝鲜版八&#xff0c;此版本完善了数据库自动反射功能。完善了多对多候选功能。尝鲜版八在以前的版本上修复了大量缺陷和功…

PDF文件切割,无大小限制

前言 公司让学习一个东西&#xff0c;让写一个学习总结&#xff0c;我想这不是AI的拿手好戏&#xff0c;直接把近100M的PDF喂给他&#xff0c;然后他说吃不下&#xff0c;太大了 小事&#xff0c;那么多在线PDF工具网站&#xff0c;分分钟拆开&#xff0c;然后找了半天也都是…

Java开发笔记-小程序微信支付接入

步骤&#xff1a; 1.注册微信商户&#xff0c;开通小程序支付业务&#xff0c;获得必要接入参数。(Certificate、PrivateKey、merchantId、SerialNumbe、apiV3Key) 2.微信商户号关联小程序(需目标小程序审核) 3.java使用接入参数发起下单&#xff0c;获取下单参数。 4.小程…

新手设计师看一看!2024年PDF转CAD软件TOP4

在现在这个啥都能数字化的时代&#xff0c;文件格式得来回换已经成了我们工作的日常&#xff0c;特别是把PDF转成CAD&#xff0c;对工程师、设计师还有搞建筑的人来说&#xff0c;这事儿特别重要。技术越发展&#xff0c;市面上就出现了好些又快又方便的工具。今天&#xff0c;…