【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中

news2024/11/15 22:21:19

【CSS】元素居中

  • 一、 水平居中
    • 1.行内元素水平居中
      • (1)text-align
    • 2.块级元素水平居中
      • 2.1 margin
        • (1)margin
      • 2.2布局
        • (1)flex+ justify-content(推荐)
        • (2) flex+margin
        • (3)grid+ justify-content
        • (4)grid+ margin
        • (5)table+margin
      • 2.3 定位
        • (1)absolute+translate+left
        • (2)absolute+margin
        • (3)absolute+负margin+left(定宽)
        • (4)relative + 负margin(定宽)
      • 2.4 其他方法
        • (1)转行内元素inline-block+text-align
        • (2)浮动元素:margin
        • (3)浮动元素:relative
  • 二、 垂直居中
    • 1.行内元素水平居中
      • (1)line-height=height
    • 2.块级元素垂直居中
      • 2.2布局
        • (1)flex+ align-items
        • (2)flex+ margin
        • (3)grid+ align-content
        • (4)table-cell+vertical-align+inline-block
      • 2.3 定位
        • (1)absolute+translate+top
        • (2)absolute+负margin+left(定宽)
    • 3.垂直水平居中
      • 3.1布局
        • (1)flex+ align-items+justify-content
        • (2)flex+ margin
        • (3)grid+ place-items
        • (4)table-cell+text-align+vertical-align
      • 3.1定位
        • (1)absolute+translate+left+top
        • (2)absolute+负margin+left+top(定宽)

每每用到居中,总会头疼于css的编写,想着一定要找个时间好好整理一番:
整理的过程中发现很多拼拼凑凑的属性都能实现居中,其实掌握通用的几个就行,一般都比较推荐flex布局,绝对定位在项目中也常有见到,大部分水平和垂直居中分别掌握了,水平垂直居中就是合并在一起,简单的做了个图
(代码部分可以用菜鸟工具在线运行查看:https://c.runoob.com/front-end/61/)

在这里插入图片描述

一、 水平居中

1.行内元素水平居中

(1)text-align

(1)块级元素使用text-align: center,使得块级元素文本内容水平居中
(2)块级元素使用text-align: center,使得包含在块级元素的行内元素或行内块元素居中对齐
(3)块级元素下使用text-align: center,包含在其中的块级元素不能居中对齐
<div class="div1">
  <p class="p1">块级元素内块级元素文本内容水平居中</p>
  <span class="span1">块级元素内行内元素或行内块元素水平居中</span>
  <p class="p2">块级元素内块级元素本身不能水平居中</p>
  <p class="p2">但块级元素内块级元素继承了文本内容水平居中</p>
</div>
.div1{
  width:80%;
  border:10px solid green;
  text-align:center;
}
.p1{
  background-color:red
}
.span1{
 background-color:yellow  
}
.p2{
  background-color:grey;
  width:80%
}

在这里插入图片描述

2.块级元素水平居中

2.1 margin

(1)margin

块级元素上margin:0 auto (必须设置宽度width)
适合单个块级元素

 <div class="div1">
   <p class="p1">块级元素利用margin水平居中</p>
</div>
.div1{
   width:90%;
  border:10px solid red;
 
}
.p1{
  background-color:grey;
  width:90%;
  margin:0 auto;
}

在这里插入图片描述

2.2布局

(1)flex+ justify-content(推荐)

块级元素父元素上:
display:flex
justify-cointent:center
(可实现多个块元素同行居中)

<div class="div2">
	 <p class="p2">块级元素利用flex+justify-content水平居中</p>
</div>
.div2{
  width:90%;
  border:10px solid blue;
  display:flex;
  justify-content:center;
}

.p2{
 width:90%;
 background-color:grey;
}

在这里插入图片描述

(2) flex+margin

父元素: display:flex
子元素: margin:0 auto
(可实现多个块元素在一行中水平居)

<div class="div3">
    <p class="p3">块级元素利用flex+margin水平居中</p>
</div>
.div3{
  width:90%;
  border:10px solid purple;
  display:flex;
}
.p3{
 width:90%;
 background-color:grey;
 margin:0 auto
}

在这里插入图片描述
felx+margin此方法还可实现多个块元素在一行中水平居中

<div class="div3">
    <p class="p3">块级元素利用flex+margin水平居中</p>
    <p class="p3">块级元素利用flex+margin水平居中</p>
    <p class="p3">块级元素利用flex+margin水平居中</p>
</div>
.div3{
  width:90%;
  height:20%;
  border:10px solid purple;
  display:flex;
}
.p3{
  background-color:grey;
   border:1px solid yellow;
  margin:0 auto
}

在这里插入图片描述

(3)grid+ justify-content

(4)grid+ margin

将方法(1)(2)中flex改为grid即可实现
此方法不能多个块元素一行居中

(5)table+margin

将方法(2)中flex改为table即可实现
此方法不能多个块元素一行居中

2.3 定位

(1)absolute+translate+left

父元素相对定位:position:relative;
子元素绝对定位:
position:absolute;
left:50%;
transform:translate(-50%,0);
其中: left:50%子元素以它自己的左边为基准,向右平移了父元素宽度的50%,此时子元素的左边基准在中间位置,整体子元素偏右
transform:translate(-50%,0);(子元素向左平移自己宽度的一半)
transate参考:https://blog.csdn.net/weixin_42154189/article/details/109714379

 <div class="div6">
	 <p class="p6">块级元素absolute+translate水平居中</p>
</div>
.div6{
  width:90%;
  height:20%;
  border:10px solid orange;
  position:relative;
}
.p6{
 width:90%;
 background-color:grey;
 position:absolute;
 left:50%;
 transform:translate(-50%,0);
}

在这里插入图片描述

(2)absolute+margin

父级元素:position:relative
子元素:
position:absolute;
left:0;
right:0;
margin:0 auto;

<div class="div9">
    <p class="p9">块级元素absolute+margin水平居中</p>
</div>

.div9{
  width:90%;
  height:20%;
  border:10px solid pink ;
  position:relative;
}
.p9{
 width:90%;
 background-color:grey;
 position:absolute;
 left:0;
 right:0;
 margin:0 auto;

}

在这里插入图片描述

(3)absolute+负margin+left(定宽)

(类似于absolute+translate,只不过这个要求居中的元素定宽)
父级元素:position:relative
子元素:
position:absolute;
left:50%;
margin-left:-100px;

<div class="div8">
    <p class="p8">块级元素absolute+负margin水平居中</p>
</div>
.div8{
   width:90%;
  height:20%;
  border:10px solid Brown ;
  position:relative;
}
.p8{
 width:200px;
 background-color:grey;
 position:absolute;
 left:50%;
 margin-left:-100px;

}

在这里插入图片描述

(4)relative + 负margin(定宽)

对于定宽的块级元素:(对于浮动元素也有效)
position:relative
margin-left:-(元素宽一半)px;

<div class="div7">
	 <p class="p7">块级元素relative + 负margin(定宽)水平居中</p>
</div>
.div7{
  width:90%;
  border:10px solid black;
}
.p7{
 width:200px;
 background-color:grey;
 position:relative;
 left:50%;
 margin-left:-100px;
}

在这里插入图片描述

2.4 其他方法

(1)转行内元素inline-block+text-align

块级元素转为行内元素:
父级元素text-align:center ;
块级元素display:inline-block;
(其中多个块级元素并列,可在并列块级元素中添加display:inline-block;)

 <div class="div5">
	 <p class="p5">块级元素转为行内元素水平居中</p>
</div>
.div5{
  width:90%;
  border:10px solid yellow;
  text-align:center;
}
.p5{
 width:90%;
 background-color:grey;
 display:inline-block;
}

在这里插入图片描述

(2)浮动元素:margin

在浮动的元素外套一个div,设置margin: 0 auto

<div class="div10"> 
  <div class="div101">
    <p class="p10">浮动块级元素水平居中</p>
  </div>
</div>
.div10{
  width:90%;
  height:20%;
  border:10px solid GreenYellow  ;
}
.div101{
  width:20%;
  margin:0 auto;
}
.p10{
 background-color:grey;
 float: left;
}

在这里插入图片描述

(3)浮动元素:relative

<div class="div11"> 
  <div class="div111">
	 <p class="p11">浮动块级元素水平居中</p>
  </div>
</div>
.div11{
   width:90%;
  height:20%;
   border:10px solid LightBlue   ;
}
.div111{
 float: left;
 position: relative;
 left: 50%;
}
.p11{
background-color:grey;
float: left;
position: relative;
right: 50%;
}

在这里插入图片描述

二、 垂直居中

1.行内元素水平居中

(1)line-height=height

父元素的height=子元素line-height

<div class="div1"> 
   <p class="p1">浮动块级元素垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div1{
  width:90%;
  height:200px;
  border:10px solid GreenYellow  ;
}
.p1{
 background-color:grey;
  line-height:200px
}

在这里插入图片描述

2.块级元素垂直居中

2.2布局

(1)flex+ align-items

父元素:display:flex;
align-items:center;

<div class="div2">
	 <p class="p2">块级元素利用flex+align-items垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div2{
  width:90%;
  height:20%;
  border:10px solid blue;
  display:flex;
  align-items:center;
}

.p2{
 width:90%;
 background-color:grey;
}

在这里插入图片描述

(2)flex+ margin

<div class="div3">
	 <p class="p3">块级元素利用flex+margin垂直
</div>
*{
  margin:0px;
  padding:0px;
}
.div3{
  width:90%;
  height:100px;
  border:10px solid purple;
  display:flex;
}
.p3{
 width:40%;
 background-color:grey;
 margin:auto 0
}

在这里插入图片描述

(3)grid+ align-content

display:grid;
align-content:center;

<div class="div22">
	 <p class="p22">块级元素利用grid+align-content垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div22{
  width:90%;
  height:20%;
  border:10px solid red;
  display:grid;
  align-content:center;
}

.p22{
 background-color:grey;
}

在这里插入图片描述

(4)table-cell+vertical-align+inline-block

<div class="div2">
	 <p class="p2">块级元素利用table-cell;vertical-align垂直居中</p>
</div>
.div2{
  width:90%;
  height:200px;
  border:10px solid blue;
  vertical-align:middle;
  display:table-cell;
}

.p2{
 width:90%;
 background-color:grey;
 display:inline-block;
}

在这里插入图片描述

2.3 定位

(1)absolute+translate+top

参照水平方法,把移动从x轴变为y轴即可
父元素相对定位:position:relative;
子元素绝对定位:
position:absolute;
top:50%;
transform:translate(0,-50%);

 <div class="div6">
	 <p class="p6">块级元素absolute+translate垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div6{
  width:90%;
  height:20%;
  border:10px solid orange;
  position:relative;
}
.p6{
 width:90%;
 background-color:grey;
 position:absolute;
 top:50%;
 transform:translate(0,-50%);
}

在这里插入图片描述

(2)absolute+负margin+left(定宽)

<div class="div8">
	 <p class="p8">块级元素absolute+负margin垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div8{
   width:90%;
   height:200px;
  border:10px solid Brown ;
  position:relative;
}
.p8{
 width:200px;
  height:100px;
 background-color:grey;
 position:absolute;
 top:50%;
margin-top:-50px;
}

在这里插入图片描述

3.垂直水平居中

3.1布局

(1)flex+ align-items+justify-content

结合水平和垂直方法

<div class="div2">
	 <p class="p2">块级元素利用flex+align-items+justify-content垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div2{
  width:90%;
  height:20%;
  border:10px solid blue;
  display:flex;
  align-items:center;
  justify-content:center;
}

.p2{
 width:90%;
 background-color:grey;
}

在这里插入图片描述

(2)flex+ margin

结合水平和垂直方法

<div class="div3">
	 <p class="p3">块级元素利用flex+margin垂直居中</p>
</div>
*{
  margin:0px;
  padding:0px;
}
.div3{
  width:90%;
  height:100px;
  border:10px solid purple;
  display:flex;
}
.p3{
 width:40%;
 background-color:grey;
 margin:auto 
}

在这里插入图片描述

(3)grid+ place-items

结合水平和垂直方法

<div class="div22">
	 <p class="p22">块级元素利用grid+place-items垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div22{
  width:90%;
  height:20%;
  border:10px solid red;
  display:grid;
  place-items:center;
}

.p22{
 background-color:grey;
}

在这里插入图片描述

(4)table-cell+text-align+vertical-align

父元素:
display:table-cell;
text-align:center;
vertical-align:middle;
子元素:
display:inline-block;
(会被float、absolute属性破坏效果,同时margin没有效果)

<div class="div8">
	 <p class="p8">块级元素table-cell+水平垂直居中</p>
</div>
*{
  margin:0px;
  padding:0px;
}
.div8{
   width:80%;
   height:200px;
   border:10px solid Brown ;
   display:table-cell;
   text-align:center;
   vertical-align:middle;
}
.p8{
  width:80%;
  background-color:grey;
  display:inline-block;
}

在这里插入图片描述

3.1定位

(1)absolute+translate+left+top

结合水平和垂直方法

<div class="div6">
	 <p class="p6">块级元素absolute+translate+left+top水平垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div22{
  width:90%;
  height:20%;
  border:10px solid red;
  display:grid;
  place-items:center;
}

.p22{
 background-color:grey;
}

在这里插入图片描述

(2)absolute+负margin+left+top(定宽)

结合水平和垂直方法

<div class="div8">
	 <p class="p8">块级元素absolute+负margin水平垂直居中</p>
</div>
*{
  margin:0px;
  padding
}
.div8{
   width:90%;
   height:200px;
  border:10px solid Brown ;
  position:relative;
}
.p8{
  width:200px;
  height:100px;
  background-color:grey;
  position:absolute;
  top:50%;
  left:50%;
  margin-left:-100px;
 margin-top:-50px;
}

在这里插入图片描述

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

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

相关文章

张驰咨询:关于六西格玛,有一些常见的疑惑!

​ 很多想要学习六西格玛的学员&#xff0c;经常会有这些困惑&#xff1a; 以前没有接触过六西格玛&#xff0c;需要什么基础吗&#xff1f;自学还是培训&#xff1f;哪些行业会用到六西格玛呢&#xff1f;学习六西格玛对以后的工作有哪些帮助&#xff1f;如何选择六西格玛培…

STM32配置读取双路24位模数转换(24bit ADC)芯片CS1238数据

STM32配置读取双路24位模数转换&#xff08;24bit ADC&#xff09;芯片CS1238数据 CS1238是一款国产双路24位ADC芯片&#xff0c;与CS1238对应的单路24位ADC芯片是CS1237&#xff0c;功能上相当于HX711和TM7711的组合。其功能如下所示&#xff1a; 市面上的模块&#xff1a; …

股票买卖接口怎么来的?

现在股票买卖接口主要是在线上研发&#xff0c;有专业的开发团队进行源码开发和完善&#xff0c;但是&#xff0c;常常会在开发过程中出现问题&#xff0c;也就是遇到一些特殊的情况需要及时处理&#xff0c;那么股票买卖接口怎么开发实现出来的&#xff1f;一、股票买卖接口开…

案例分享| 助力数字化转型:广州期货交易所全栈信创项目管理平台上线

广州期货交易所项目管理平台基于易趋&#xff08;easytrack&#xff09;进行实施&#xff0c;通过近半年的开发及试运行&#xff0c;现已成功交付上线、推广使用&#xff0c;取得了良好的应用效果。1. 关于广州期货交易所&#xff08;以下简称广期所&#xff09;广期所于2021年…

MySQL8.0安装教程

文章目录1.官网下载MySQL2.下载完记住解压的地址&#xff08;一会用到&#xff09;3.进入刚刚解压的文件夹下&#xff0c;创建data和my.ini在根目录下创建一个txt文件&#xff0c;名字叫my&#xff0c;文件后缀为ini&#xff0c;之后复制下面这个代码放在my.ini文件下&#xff…

华为手表开发:WATCH 3 Pro(4)创建项目 + 首页新建按钮,修改初始文本

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;4&#xff09;创建项目 首页新建按钮&#xff0c;修改初始文本初环境与设备创建项目创建项目入口配置项目认识目录结构修改首页初始文本文件名&#xff1a;index.hml新建按钮 “ 按钮 ”index.hml初 鸿蒙可穿戴开发 希望能写…

直播预告 | 对谈谷歌云 DORA 布道师:聊聊最关键的四个 DevOps 表现指标

本期分享 DORA 的全称是 DevOps Research and Assessment&#xff0c;是一个致力于 DevOps 调研与研究的组织&#xff0c;2018 年加入 Google Cloud。自 2014 年起&#xff0c;DORA 每年会发布一份行业报告&#xff0c;基于对数千名从业者的调研&#xff0c;分析高效能团队与低…

联想K14电脑开机全屏变成绿色无法使用怎么U盘重装系统?

联想K14电脑开机全屏变成绿色无法使用怎么U盘重装系统&#xff1f;最近有用户使用联想K14电脑的时候&#xff0c;开机后桌面就变成了绿色的背景显示&#xff0c;无法进行任何的操作。而且通过强制重启之后还是会出现这个问题&#xff0c;那么这个情况如何去进行系统重装呢&…

PMP证书要怎么考,含金量怎么样?

很多朋友在对PMP不是了解的时候&#xff0c;会有些犹豫&#xff0c;PMP证书到底值不值得考。考下来有用吗&#xff1f; PMP证书当然有用&#xff0c;要含金量有含金量&#xff0c;要专业知识有专业知识&#xff0c;不过要是考了不用&#xff0c;久而久之忘了学习的内容&#x…

怿星科技校招礼盒:我想开了

校招礼盒大揭秘为了帮助2023届新同学快速了解怿星文化增强认同感经过1个多月的精心准备我们的校招大礼盒终于跟大家见面啦&#xff01;&#xff01;我们用了大量的公司IP形象-小怿通过各式各样的姿势和表情欢迎新同学的到来搭配着IP的蓝色色调传递出一种科幻与探索的感觉希望加…

计算机组成原理:1. 计算机系统概论

更好的阅读体验\huge{\color{red}{更好的阅读体验}}更好的阅读体验 文章目录1.1 计算机系统简介1.1.1 计算机软硬件概念1.1.2 计算机的层次1.1.3计算机组成和计算机体系结构1.2 计算机的基本组成1.2.1 冯诺伊曼计算机的特点1.2.2 计算机的硬件框图1.2.3 计算机的工作步骤1.3 计…

问卷调查会遇到哪些问题?怎么解决?

提到问卷调查我们并不陌生&#xff0c;它经常被用作调查市场、观察某类群体的行为特征等多种调查中。通过问卷调查得出的数据能够非常真实反映出是市场的现状和变化趋势&#xff0c;所以大家经常使用这个方法进行调查研究。不过&#xff0c;很多人在进行问卷调查的时候也会遇到…

JAVA八股、JAVA面经

还有三天面一个JAVA软件开发岗&#xff0c;之前完全没学过JAVA&#xff0c;整理一些面经...... 大佬整理的&#xff1a;Java面试必备八股文_-半度的博客-CSDN博客 另JAVA学习资料&#xff1a;Java | CS-Notes Java 基础Java 容器Java 并发Java 虚拟机Java IO目录 int和Inte…

电商新趋势来临!?解析Dtop 环球嘉年华电商是否值得加入!

近年来,电商平台的发展瞬息万变,加上疫情的推波助澜,让全球的电子商务来到前所未有的光景,营业销售额直达颠覆性的增长。 许多商家也因此纷涌而入,谋划分得电子商务的一杯羹。随着参与成为电商的商家日益剧增,商家们想从中谋利也不是件易事。再加上市场不断洗牌的形势下,传统电…

楔形文字的起源全2课-北京大学拱玉书 笔记

楔形文字的起源全2课-北京大学拱玉书 说明&#xff1a;以下图片素材均出自视频 【楔形文字的文源】 《吉尔伽美什史诗》记载的楔形文字起源&#xff1a; 学术界对楔形文字起源的总结&#xff1a; 【关于文字的演化理论发展史】 威廉.瓦尔伯顿提出文字“叙事图画”演变说…

浅谈 RBAC 权限模型

写作背景 工作两年半了&#xff0c;笔者一直在做 To B 的产品&#xff0c;像是后端管理系统、Saas 系统都有接触过&#xff0c;它们都有一个共同点&#xff1a;权限管理。我每天都在接触但只是从前端开发这个角色去理解&#xff0c;我对整个业务流程其实是比较模糊的&#xff…

第三部分:(主从)复合句——第一章:名词性从句

回顾&#xff1a;第二部分讲解的是并列句&#xff0c;即多件同等重要的事通过并列连词进行相连接&#xff0c;构成并列句 但是&#xff0c;现实生活中并不是许多事都是同等重要的&#xff0c;复合句就出现了&#xff0c;复合句全称为主从复合句 复合句 多件事不一样重要 主句…

GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化进阶

除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉降等各种地质灾害&#xff0c;具有类型多样、分布广泛、危害性大的特点。地质灾害危险性评价着重于根据多种影响因素和区域选择来评估在某个区域中某个阶段发生的地质灾害程度。以此预测和分析未来某个地形单位发生地质灾害…

社区买菜业务流程

前言 最近由于疫情的原因&#xff0c;很多城市的小区都不允许快递员上门送货了&#xff0c;用户只能到小区指定的地点进行取货。 多点、叮咚买菜、美菜、盒马等电商着实火了一把&#xff0c;每天的订单量都非常的多&#xff0c;他们都依托于超市或线下门店等进行接单、商品打…

解锁 Android 手机的11大有效技巧

想了解如何在没有密码或图案的情况下解锁 Android 智能手机吗&#xff1f;按照以下 10 大最佳技巧解锁 Android 手机。 人们很可能会在智能手机上应用屏幕锁定图案或密码以保护隐私。为防止其他人访问您的手机和您的个人数据&#xff0c;设置屏幕锁定密码或图案至关重要。内置…