div 中元素居中的N种常用方法

news2025/1/12 3:52:48

        本文主要记录几种常用的div盒子水平垂直都居中的方法。本文主要参考了该篇博文并实践加以记录说明以加深理解记忆 css之div盒子居中常用方法大全

        本文例子使用的 html body结构下的div 盒子模型如下:

<body>
	<div class="container">
		<div class="box"></div>
	</div>
</body>

         例子盒子居中效果都如下图:

注:当把div 盒子模型中子div换成其他块级元素,如<p>或<h1>~<h6>时,以下方法仍然奏效。但当把子div换成行内元素,如<span>时,第6,第7种方法将失效。

1、弹性布局 设置容器项目在横轴和纵轴上都居中对齐

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				display: flex;
				justify-content: center;
				align-items: center;
			}
		
			.box{
				width: 120px;
				height: 120px;
				background: #55a9ff;
			}
    </style>

 

2、弹性布局 设置容器项目 margin:auto

        该方法可以不设置容器项目横轴和纵轴的对齐方式,直接设置margin:auto即可2、弹性布局 设置容器项目 margin:auto

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				display: flex;
			}
		
			.box{
				width: 120px;
				height: 120px;
				margin: auto;
				background: #55a9ff;
			}
	</style>

  

3、绝对定位法

        父div要使用其中一种定位方式:relative / absolute / sticky / fixed子div使用绝对定位,并使它的 top、left、right、bottom 都为0且margin:auto 即可

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				position: relative;
			}
			
			.box{
				width: 120px;
				height: 120px;
				position: absolute;
				background: #55a9ff;
				top: 0;
				left: 0;
				right: 0;
				bottom: 0;
				margin: auto;
			}
	</style>
  • 绝对定位法还可以只设置top、bottom为0,实现只垂直居中
    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				position: relative;
			}
			
			.box{
				width: 100px;
				height: 100px;
				position: absolute;
				background: #55a9ff;
				top: 0;
				bottom: 0;
				margin: auto;
			}
	</style>

  •  同理可以只设置left、right为0,实现只水平居中 

4、transform居中法

        使用 transform 可以不用管子div自身的宽高,但要设置父子div的position属性,可都设置成 relative / absolute,此方法IE9 以下不支持

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				position: relative;
			}
			
			.box{
				width: 120px;
				height: 120px;
				position: absolute;
				background: #55a9ff;
				top: 50%;
				left: 50%;
				transform: translate(-50%,-50%);
			}	
	</style>

5、负margin居中

        利用子div 负的margin来进行居中,此方法要知道子div固定的宽高,且margin-top、margin-left 要是子div 自身宽高负的一半值

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				position: relative;
			}
			
			.box{
				width: 120px;
				height: 120px;
				position: absolute;
				background: #55a9ff;
				top: 50%;
				left: 50%;
				margin-top: -60px;
				margin-left: -60px;
			}	
            /* 如果box的宽高都是100px,那margin-top和margin-left要是-50px */
	</style>

6、margin固定宽高居中

        此方法要知道父子div的宽高,且要算出子div的margin 的高度和宽度 恰好在父div居中

该方法把子div换成行内元素,如<span>时将会失效

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
			}
			
			.box{
				width: 120px;
				height: 120px;
				background: #55a9ff;
				margin: 90px 90px;
			}
			/* 如果 box 的宽高都是 100px,那么 margin: 100px 100px; */
	</style>

7、table-cell居中

        此方法是将父div转换成表格单元格显示,然后使用垂直居中并且子div左右margin auto实现,该方法把子div换成行内元素,如<span>时将会失效

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				display: table-cell;
				vertical-align: middle;
			}
			
			.box{
				width: 120px;
				height: 120px;
				background: #55a9ff;
				margin: 0 auto;				/* 不能省 */
			}
	</style>

8、不确定宽高居中(绝对定位百分数)

        此方法不设置子div的宽高,其宽高根据设置占用父div的比例来算,left和right的百分数一样就可以实现水平居中,top和bottom的百分数一样就可以实现垂直居中。其中子div要设置成绝对定位,父div 要设置成 relative / absolute / fixed / sticky

    <style>
			.container{
				height: 300px;
				width: 300px;
				border: 1px solid black;
				background-color: aliceblue;
				position: relative;
			}
			
			.box{
				position: absolute;
				background: #55a9ff;
				top: 25%;
				left: 25%;
				right: 25%;
				bottom: 25%;
				margin: auto;
			}
            /* top / left / right / bottom 设置的比例不一样,box 的宽高将会随之变大或变小*/
	</style>

以上方法如有错误请各位不吝指教,如以后有别的方法将会往下继续添加,各位有其他方法可留言告知。

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

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

相关文章

docker desktop搭建 nginx

【docker 桌面版】windows 使用 docker 搭建 nginx 拉取 nginx 镜像 docker pull nginx运行容器 docker run -d -p 80:8081 --name nginx nginx本地磁盘创建 nginx 目录 D:\DockerRep\nginx复制 docker 中的 nginx 配置文件 查看运行的容器 docker ps -a docker cp 9f0f82d66dd…

点亮你的第一颗Led灯

1、&#x1f4d5;前言 该系列文章用于记录个人学习stm32单片机的过程&#xff0c;全文搭配图文解说&#xff0c;零基础的萌新也能读懂&#xff0c;欢迎指导讨论~ 2、&#x1f4e6;准备材料 2.1、&#x1f4dd;硬件材料清单 面包板1块 PWLINK PowerWriter仿真器1个 杜…

2023/8/12总结

增加了管理员功能点&#xff1a;&#xff08;管理标签和分类&#xff09; 另外加了一个转换成pdf的功能 主要是通过wkhtmltopdf实现的&#xff0c;之前看过很多说用adobe的还有其他但是都没成功。 然后就是在学习websocket和协同过滤算法实现&#xff0c;还只是初步了解了这些。…

【C语言】自定义实现strlen函数的3种方法

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C语言中自定义实现strlen函数的3种方法&#xff0c;如果大家觉得我写的不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 在自定义实现strlen函数之前&#xff0c;我们简单的介绍一下strlen函…

2023 年第八场牛客多校题解

A Alive Fossils 题意&#xff1a;依次举办 n n n 场多校&#xff0c;每场多校有一些出题人。问哪些出题人每场都出题了。 解法&#xff1a;用 set 维护下一直在出题的人即可。 B Bloodline Counter 题意&#xff1a;求 n n n 个点的竞赛图中最大环大小恰好为 k k k 的方…

【国赛清单】2023全国大学生电赛综合测试【总结】

综合测评简介 &#xff08;1&#xff09;综合测评是全国大学生电子设计竞赛评审工作中非常重要的一个环节&#xff0c;是“一次竞赛二级评审”工作中全国专家组评审工作的一部分。 &#xff08;2&#xff09;测试对象为赛区推荐上报全国评奖的优秀参赛队全体队员&#xff0c;…

找不到资产文件project.assets.json

NuGet 在“obj”文件夹中写入名为 project.assets.json 的文件&#xff0c;.NET SDK 使用该文件来获取有关要传递到编译器的包的信息 。 如果在生成过程中找不到资产文件 project.assets.json&#xff0c;则会发生此错误。 1.执行命令的方式解决 点击工具&#xff0c;分别展开命…

实例 -- Loadrunner实现Android / IOS 手机APP压力测试

随着手机APP用户量的增大&#xff0c;大的手机APP一般都需要进行压力测试&#xff0c;这几天用了Loadrunner 12进行了手机APP的压力测试&#xff0c;整理了下&#xff0c;大家可以参考参考怎样给Andorid / IOS手机APP进行压力测试&#xff0c;以下是操作实例。 先前我的一个帖…

论文浅尝 | CI4MRC:基于因果推断去除机器阅读理解中的名字偏差

笔记整理&#xff1a;朱珈徵&#xff0c;天津大学硕士&#xff0c;研究方向&#xff1a;问答 链接&#xff1a;https://aclanthology.org/2023.findings-acl.812/ 动机 机器阅读理解&#xff08;Machine Reading Comprehension&#xff0c;MRC&#xff09;是根据给定的文章回答…

linux 命令- systemctl

systemctl 参数说明 1、使用语法 用法&#xff1a;systemctl [OPTIONS…] {COMMAND} … 2 、参数说明 参数参数说明start立刻启动后面接的unitstop立刻关闭后面接的unitrestart立刻关闭后启动后面接的unit&#xff0c;亦即执行stop再start的意思reload不关闭后面接的unit的…

从零开始实现一个玩具版浏览器渲染引擎

前言 浏览器渲染原理作为前端必须要了解的知识点之一&#xff0c;在面试中经常会被问到。在一些前端书籍或者培训课程里也会经常被提及&#xff0c;比如 MDN 文档中就有渲染原理的相关描述。 作为一名工作多年的前端&#xff0c;我对于渲染原理自然也是了解的&#xff0c;但是…

HCIP学习--BGP1

目录 BGP是什么 AS EGP协议 IGP协议 EGP和IGP的区别 IGP协议追求 EGP协议的追求 BGP协议 BGP的特性 可靠性 可控性强 AS-BY-AS 具有丰富的属性来取代IGP中度量进行选路 默认不被用于负载均衡 不需要周期更新 无类别路径矢量 BGP数据包 Open Keeplive Update…

MIMO-NOMA系统MATLAB仿真实现

非正交多址接入&#xff08;NOMA&#xff09;技术可以打破传统的正交多址一个基本资源块由单用户独占的限制&#xff0c;通过在时域和频域的基础上开辟新的功率域维度&#xff0c;在相同的时频资源上通过功率复用技术允许同一个时频资源块由多个用户共享&#xff0c;有效提升了…

树莓派使用 ENC28J60

前言 一些老的、Mini 的 ARM 开发板上没有预留网口&#xff0c;这样在调试升级内核或应用程序时很不方便。纵使有串口下载工具&#xff0c;但其速度也是慢地捉急。这种情况下&#xff0c;使用其它接口来扩展出一个网口无疑是一个比较好的方法。 ENC28J60 就是一个使用 SPI 接口…

软件测试基础篇——MySQL

MySQL 1、数据库技术概述 数据库database&#xff1a;存放和管理各种数据的仓库&#xff0c;操作的对象主要是【数据data】&#xff0c;科学的组织和存储数据&#xff0c;高效的获取和处理数据SQL&#xff1a;结构化查询语言&#xff0c;专为**关系型数据库而建立的操作语言&…

LabVIEW开发图像采集和基于颜色的隔离

LabVIEW开发图像采集和基于颜色的隔离 在当今的工业和工厂中&#xff0c;准确性和精度是决定特定行业生产力的两个重要关键点。为了优化生产力&#xff0c;各行各业正在从手动操作转向自动操作和控制。机器人技术在工业过程中的出现为人类提供了机械辅助。机器视觉在工业机器人…

LinuxC编程——线程的同步与互斥

目录 一、同步的概念二、同步机制2.1 信号量2.1.1基础概念2.1.2 函数接口2.1.3 例子 2.2 互斥锁2.2.1 几个概念2.2.2 函数接口2.2.3 练习 2.3 条件变量2.3.1 步骤2.3.2 函数2.3.3 练习 我们知道&#xff0c;一个进中的所有线程共享进程的资源&#xff0c;所以可以通过在进程中定…

【概念篇】文件概述

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文件概述 1&#xff0c;文件的概念 狭义上的文件是计算机系统中用于存储和组织数据的一种数据存…

大华智慧园区综合管理平台文件上传漏洞复现(HW0day)

0x01 产品简介 “大华智慧园区综合管理平台”是一款综合管理平台&#xff0c;具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配&#xff0c;满足多元化的管理需求&#xff0c;同时通过提供智能服务&#xff0c;增强使用体验。 0x02 漏洞概述 大华智慧园…

PowerShell 使用SqlScriptDOM对T-SQL做规则校验

对于数据项目来说&#xff0c;编写Sql是一项基本任务同时也是数量最多的代码。为了统一项目代码规范同时降低Code Review的成本&#xff0c;因此需要通过自动化的方式来进行规则校验。由于本人所在的项目以SQL Server数据库为基础&#xff0c;于是本人决定通过使用SqlScriptDom…