CSS实现文字垂直居中

一、问题描述: 当高度固定或不固定时,单行或多行文本难以实现垂直居中;

二、解决方法:

1、使用line-height属性,将line-height设置与元素高度等高。

局限性:只适用于单行文本,局限性大。

代码:

.box {
	height: 100px;
	line-height: 100px;
	white-space: nowrap;
}

2.padding:设置相等的上下padding值。

局限性:有高度限制时不能垂直居中。

代码:

.box{
	padding-top: 30px;
	padding-bottom: 30px;
}

3.绝对定位居中:top:0; bottom:0; left:0; right:0; margin:auto;

元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值。(过度受限指的是同时设置top/bottom与height或者left/right与width。)

优点:支持响应式,只有这种方法在resize之后仍然垂直居中

缺点:使用绝对定位时元素必须有明确高度,没有显式设置overflow时,内容超过元素高度时会溢出,没有滚动条。IE浏览器不支持

代码:

.box{/*display:none;*/
	position:absolute;
	width:200px;
	height:200px;
	top:0;
	bottom:0;
	left:0;
	right:0;
	margin:auto;
	background:#000; 
	resize:both;/*用于设置了所有除overflow为visible的元素*/
	overflow:auto; 
}

4.固定高度定位居中:top: 50%;height: 100px;margin-top: -50px;

优点:代码量少、浏览器兼容性高,支持ie6,ie7
缺点:不支持响应式(不能使用百分比、min/max-width),高度固定。

代码:

.parent {
	position: relative;
}

.child {
	position: absolute;
	top: 50%;
	height: 100px;
	margin-top: -50px; /*transform: translateY(-50%);*/
}

5.不固定高度定位居中:top:50%;left:50%;transform:translate(-50%, -50%)

缺点:不支持响应式(不能使用百分比、min/max-width)

代码:

.parent {position: relative;}
.child{
	position:absolute;
	top:50%;
	left:50%;
	transform:translate(-50%, -50%);
}

6.table-cell方式居中:dispaly:table;display:table-cell;vertical-align:middle;

display:table-cell属性指让标签元素以表格单元格的形式呈现,类似于td标签。

原理:利用表布局特点,vertical-align设置为middle后,单元格中内容中间与所在行中间对齐。

优点:支持任意内容的可变高度、支持响应式布局

缺点: 每一个需要垂直居中的元素都会需要加上额外标签(需要table、table-cell两个额外元素);

IE浏览器不支持

代码:

.father{ 
	height:200px; 
	display:table; 
}

.son{
	border:1px solid #000; 
	width:760px;
	vertical-align:middle;
	display:table-cell; /*cell垂直居中,如果外层div不为table则tablecell须有高度*/ 
}

7.弹性盒式布局居中:display: flex;align-items:center;

优点:真正的垂直居中布局

缺点:ie11才开始支持弹性布局

代码:

.box{
	display:-webkit-box;
	display:-moz-box;
	display:-ms-flexbox;
	display: -webkit-flex;
	display:flex; 
	-webkit-align-items:center;
	align-items:center;
	-webkit-justify-content: center;
	justify-content: center;
}

总结

1、只有单行文本时,可以将line-height设置与元素高度等高

2、外层div与内层div高度均固定时,可以使用设置相等的上下padding值;

3、当高度固定时,可以采用固定高度定位居中:top: 50%;height: 100px;margin-top: -50px;此方法对IE浏览器支持较好;

4、当高度不固定时,可以采用弹性盒式布局居中:display: flex;align-items:center;此方法操作简单,但ie11才开始支持弹性布局;或者采用table-cell方式居中:dispaly:table;display:table-cell;vertical-align:middle;此方法支持任意内容的可变高度,但操作繁琐,并且IE8以上的浏览器才支持;

  • 24
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
CSS中,有多种方法可以实现文字垂直居中。其中一种方法是使用line-height属性。通过设置一个容器的line-height属性等于容器的高度,可以使文字在容器中垂直居中。例如,可以使用以下代码实现文字垂直居中: ```html <div class="container"> line-height 使文字垂直居中 </div> <style> .container { margin: 20px 0px; width: 100%; height: 100px; line-height: 100px; background-color: pink; } </style> ``` 另一种方法是使用flex布局。通过设置容器的display属性为flex,并使用align-items属性将项目垂直居中,可以实现文字垂直居中。以下是一个示例代码: ```html <div class="container"> flex布局 使文字垂直居中 </div> <style> .container { margin: 20px 0px; width: 100%; height: 100px; display: flex; align-items: center; background-color: pink; } </style> ``` 还可以使用display和vertical-align属性来实现文字垂直居中。以下是一个示例代码: ```html <div class="text-con">单行文字垂直居中</div> <style> .text-con { width: 200px; height: 60px; line-height: 60px; color: #fff; background: #000; text-align: center; } </style> ``` 另外,还可以使用display: table和vertical-align: middle属性来实现文字垂直居中。以下是一个示例代码: ```html <div class="parent"> <div class="child"> <div>使用display和vertical-align 使文字垂直居中</div> <div>使用display和vertical-align 使文字垂直居中</div> </div> </div> <style> .parent { display: table; width: 100%; height: 100px; background-color: skyblue; } .child { display: table-cell; vertical-align: middle; background-color: pink; } </style> ``` 以上是几种常用的方法来实现CSS文字垂直居中。根据具体的需求和布局,可以选择适合的方法来实现文字垂直居中效果。 #### 引用[.reference_title] - *1* *3* [CSS 设置垂直居中](https://blog.csdn.net/qq_39998026/article/details/127102392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CSS实现垂直居中的十五种方法](https://blog.csdn.net/guanguan0_0/article/details/83111874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值