前端元素垂直水平居中的多个方法

创建一个BFC,高度坍塌、居中、margin重合问题均可解决
1、 浮动元素float不为none
2、 绝对定位或固定定位:position:absolute/fixed
3、 行内元素:display:inline-block;
4、 overflow不为visible的块级元素
5、 display值为flow-root、表格单元素table-cell、表格标题table-caption
6、 匿名表格单元格元素

1、水平居中

块级元素
方法一:auto
注意:该元素不可浮动、绝对定位、固定定位

margin: 0 auto;

方法二:calc 注意:两个数值之间必须有空格

position:  relative / absolute / fixed;
left: calc(50% - 元素宽的一半px);    四则运算 
top: calc(50% - 元素高的一半px);		垂直居中

方法三:弹性盒子

父级元素属性
display: flex;		弹性盒子
flex-direction: row;		主轴方向为水平方向,起点在左端
justify-content:center;

方法四:定位

position: absolute;
left: 50%;
margin-left: -元素的一半宽px; / transform: translate(-50%,0);
							   2D变换中的属性,延x轴移动自身的-50%

行内元素

text-align: center;	/* 父元素 */

注意:calc低版本IE不支持


2、垂直居中

行内元素:父级元素属性,并且父级元素必须是块元素
方法一(多行文本失效):这个只表示某一行当中的垂直居中

line-height:父元素的高;   将字体高度调整为div的高度
vertical-align: bottom;			暂未理解,底部对齐

方法二(IE8不支持):
父元素相对定位 relative,必须有固定高度,子元素绝对定位absolute

子元素属性
top: 50%;
transform: translate(0,-50%); / calc(50% - 一半高度) /margin-top: -(一半高度);

方法三:弹性盒子(兼容性问题,IE不支持,移动端浏览器都支持)
原理:交叉轴上的内容在轴上居中

父类属性
display: flex;
align-items:center;(垂直居中)

块级元素
方法一:弹性盒子

display: flex;
display: -webkit-flex;
justify-content: space-between;
align-items: center;

方法二:弹性盒子

父元素:display:flex;
子元素:align-self:center;

方法三:vertical-align,IE不兼容

父元素{
    display: table-cell	/ inline-block;
    vertical-align: middle;
}

方法四:绝对定位

父元素relative
子元素{
 position: absolute;
 top: 50%;
 margin-top: -自身高度的一半;
}

方法五:伪元素before

父元素::before{
    content: '';
    display: inline-block;
    vertical-align: middle;
    height: 100%;
}
子元素 {
    display: inline-block;
    vertical-align: middle;
}

方法六:transformY

子元素{
    position: relative;
	top: 50%;
    transform: translateY(-50%);
}

3、水平垂直居中

方法一:
父元素 {
	position: relative;
}
子元素 {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}

方法二:
父元素{
	position: relative;
	height: 50px;
}

子元素 {
	position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -25px;
    margin-left: -25px;
}

方法三:
父元素{
    display: flex;
    justify-content: center;
    align-items: center;
}

4、高度坍塌

方法一:使父元素浮动 float
方法二:清除浮动 clear:both;
方法三:给父级元素固定宽高
方法四:给父元素添加overflow:hidden;
方法五:万能清除法:after伪元素+清除浮动html部分

父元素::after {  
    content: '';
    height: 0;
    clear: both;
    display: block;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
有多种方法可以实现多个标签垂直居中,以下是其中几种常见的方式: 1. 使用flexbox布局 在容器上设置display:flex和align-items:center属性,可以使子元素垂直方向上居中。 HTML代码: ``` <div class="container"> <div class="item">标签1</div> <div class="item">标签2</div> <div class="item">标签3</div> </div> ``` CSS代码: ``` .container { display: flex; align-items: center; flex-direction: column; /* 设置为垂直方向排列 */ height: 100vh; /* 设置高度为视口高度 */ } .item { margin: 10px; /* 设置间距 */ } ``` 2. 使用table-cell布局 将容器的display属性设置为table,子元素的display属性设置为table-cell,再设置vertical-align:middle属性即可使子元素垂直方向上居中。 HTML代码: ``` <div class="container"> <div class="item">标签1</div> <div class="item">标签2</div> <div class="item">标签3</div> </div> ``` CSS代码: ``` .container { display: table; height: 100vh; /* 设置高度为视口高度 */ } .item { display: table-cell; vertical-align: middle; margin: 10px; /* 设置间距 */ } ``` 3. 使用position和transform属性 将容器的position属性设置为relative,子元素的position属性设置为absolute,再使用transform属性将子元素向上移动一半高度即可使子元素垂直方向上居中。 HTML代码: ``` <div class="container"> <div class="item">标签1</div> <div class="item">标签2</div> <div class="item">标签3</div> </div> ``` CSS代码: ``` .container { position: relative; height: 100vh; /* 设置高度为视口高度 */ } .item { position: absolute; top: 50%; transform: translateY(-50%); margin: 10px; /* 设置间距 */ } ``` 以上是三种常见的多个标签垂直居中的方法,您可以根据自己的实际需求选择适合自己的方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值