行内元素与块级元素居中方法

一、行内元素

前言:觉得之前写的那篇关于水平居中、垂直居中、水平垂直居中的博客写的不太好,所以又整理了一遍。
之前博客的地址

1. 水平居中

方法一:text-algin:center

父元素设置:text-align:center
说明:

  1. text-align设置在父元素上,对子元素的居中效果上只能对子元素中的行内元素起作用,对块级元素不起作用。
  2. text-align在对本元素中的文字居中效果上,只对块级元素起作用,对行内元素不起作用,行内元素的宽度由内容决定。
  3. text-align会被后代元素继承
.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	text-align:center;
}
.inner{
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法二:postion:relative + position:absolute + left:50% + transform:translateX(-50%)

父元素设置:postion:relative
子元素设置:postion:absolute + left:50% + transform:translateX(-50%)

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

2. 垂直居中

方法一:display:flex + align-items:center

父元素设置:display:felx , align-items:center

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
	align-items: center;
}
.inner{
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法二:postion:relative + position:absolute + top:50% + transform:translateY(-50%)

父元素设置:postion:relative
子元素设置:postion:absolute + top:50% + transform:translateY(-50%)

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法三:display:table-cell + vertical-align:middle

父元素设置:display:table-cell , vertical-align:middle

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
	align-items: center;
}
.inner{
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法四:多个子级行内元素,使用vertical-align

说明:

  1. vertical-algin是用来设置行内元素垂直对齐的方式
  2. 该属性定义行内元素的基线相对于该元素(设置了vertical-algin的元素)所在行的基线的垂直对齐方式。在表格中,这个属性会设置单元格框中的单元格内容的对齐方式。
  3. 只有元素是inline-block和inline的时候,设置vertical-algin才会起作用
  4. 我们需要更理解vertical-align才能使用好这个属性,以下两个博客可以帮助我们更好的理解
    vertical-align到底怎么用
    关于Vertical-Align你需要知道的事情
.outer{
	width: 300px;
	/*height: 200px;*/
	background-color: #bfa;
	display: table-cell;
	vertical-align: middle;
}
.inner{
	background-color: yellow;
	vertical-align: middle;
}
img{
	vertical-align: middle;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
	<img src="./img/zhongchou.png" alt="">
</div>

3. 水平垂直居中

方法一:text-align:center + (line-height)

父元素设置:text-align:center , line-height = height
说明:块级元素只设置line-height而不设置height时,line-height = height

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	text-align: center;
	line-height: 200px;
}
.inner{
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法二:dispaly:table-cell + text-align:center + vertical-align:middle

父元素设置:display:table-cell , text-align:center , vertical-align:middle

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: table-cell;
	text-align: center;
	vertical-align: middle;
}
.inner{
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法三:display:flex + align-items:center + justify-content:center

父元素设置:display:flex , align-items:center , justify-content:center

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
	align-items: center;
	justify-content: center;
}
.inner{
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法四:dispaly:flex + margin:auto;

父元素设置:display:flex
子元素设置:margin:auto

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
}
.inner{
	background-color: yellow;
	margin: auto;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

方法五:position:relative + position:absolute + left:50% + top:50% + transform:translate(-50%,-50%);

父元素设置:position:relative
子元素设置:position:absolute + left:50% + top50%+transform:translate(-50%,-50%)

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%,-50%);
	background-color: yellow;
}
<div class="outer">
	<span class="inner">
		行内元素1
	</span>
</div>

在这里插入图片描述

二、块级元素

1. 水平居中

方法一:margin: 0 atuo

子元素设置:margin: 0 atuo

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
}
.inner{
	width: 100px;
	height: 100px;
	margin: 0 auto;
	background-color: yellow;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

在这里插入图片描述

方法二:display:flex + justify-content:center

父元素设置:dispaly:felx + justify-content:center

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
	justify-content: center;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

在这里插入图片描述

方法三:display:flex + margin: 0 auto;

父元素设置:display:flex
子元素设置:margin:0 atuo

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display:flex;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	margin: 0 auto;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

在这里插入图片描述

方法四:position:relative + position:absolute + left:50%+transform:translateX(-50%)

父元素设置:position:relative
子元素设置:position:absolute + left:50% + transform:translate(-50%)

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

在这里插入图片描述

方法五:position:relative + position:absolute + left:0 + right:0 + margin 0 auto;

父元素设置:position:relative
子元素设置:position:absolute + left:0 + right:0 + marign:0 auto

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	position: absolute;
	left: 0;
	right: 0;
	margin: 0 auto;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

在这里插入图片描述

2. 垂直居中

方法一:display:flex + algin-items:center

父元素设置:display:flex + algin-items:center

<style>
	.outer{
		width: 200px;
		height: 200px;
		background-color: #bfa;
		display: flex;
		align-items: center;
	}
	.inner{
		width: 100px;
		height: 100px;
		background-color: yellow;
	}
</style>
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

在这里插入图片描述

方法二:display:flex + margin:auto 0

父元素设置:display:flex
子元素设置:display:flex + margin:auto 0

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	margin: auto 0;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

方法三:position:relative + position:absolute + top:50%+transform:translateY(-50%)

父元素设置:position:relative
子元素设置:position:absolute + top:50% + transform:translateY(-50%)

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

方法四:position:relative + position:absolute + top:0 + bottom:0 + margin:auto 0

父元素设置:position:relative
子元素设置:position:absolute + top:0 + bottom:0 + margin:auto 0

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	position: absolute;
	top: 0;
	bottom: 0;
	margin: auto 0;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

3. 水平垂直居中

方法一:display:flex + algin-items:center + justify-content

父元素设置:display:flex + algin-items:center + justify-content

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;
	justify-content: center;
	align-items: center;
}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

方法二:display:flex + margin: auto;

父元素设置:display:flex
子元素设置:margin: auto

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	display: flex;

}
.inner{
	margin: auto;
	width: 100px;
	height: 100px;
	background-color: yellow;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

方法三:position:relative + position:absolute + top:50% + left:50% + transform:translate(-50%,-50%)

父元素设置:position:relative
子元素设置:position:absolute + top:50% + left:50% + transform:translate(-50%,-50%)

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;

}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

方法四:position:relative + position:absolute + top:0 + bottom:0 + left:0 + right:0 + margin:auto

父元素设置:position:relative
子元素设置:position:absolute + top:0 + bottom:0 + left:0 + right:0 + margin:auto

.outer{
	width: 200px;
	height: 200px;
	background-color: #bfa;
	position: relative;

}
.inner{
	width: 100px;
	height: 100px;
	background-color: yellow;
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	margin: auto;
}
<div class="outer">
	<div class="inner">
		块级元素1
	</div>
</div>

三、关于display:table-cell和margin的说明

display:table-cell:

父元素设置dispaly:table-cell,[text-align:center],[vertical-align:middle],子元素设置dispaly:inline-block。可以实现行内元素,块级元素的水平居中,垂直居中,水平垂直居中;但是这种方式改变了父元素和子元素的性质

margin:

  1. 当元素脱离默认文档流时(浮动,绝对定位,固定定位),margin失效
  2. 给inline-block和inline设置margin:0 auto时是没用的
  3. 后续会写一篇关于水平方向上的七个属性以及浮动时水平方向上的属性的博客
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值