[转]文字垂直居中

 “文字垂直居中”这个算是老话题,网上也有很多解决方式,我这里就介绍一种较为简单的实现方法.

具体来说应该有两种情况:
1.单行文字
    这种情况比较好处理,直接设置与height相等的line-height就OK,或者使用padding.

2.多行文字在已知高度的容器里垂直居中
    曾经用table布局的时候要达到这个效果非常容易,但现在就需要费点心思:

    对于标准的浏览器只需添加display:table-cell; vertical-align:middle;就可以实现,目前IE8已支持这种写法,但IE6 IE7还是不不行.

    针对IE6,IE7我们需要改变下结构,这里是增加了<i>和<p>两个容器,其中<i>的宽度设为0,高度设为100%,这就形成一条看不见的线,并设为内联元素使得vertical-align:middle;生效,用zoom:1;触发IE的layout,配合<p>的weight:100%和vertical-align:middle;最终实现了文字的垂直居中,看看效果:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>文字与图片垂直居中</title>
<style type="text/css">
.demo{ display:table-cell; width:400px; height:300px; border:1px solid #d7d7d7; vertical-align:middle;}
.demo i{ display:inline; width:0px; height:100%; vertical-align:middle; zoom:1;}
.demo p{ display:inline; width:100%; vertical-align:middle; zoom:1;}
</style>
</head>
<body>
<div class="demo">
 <i></i>
 <p>我们来看看这段文字是不是垂直居中的,我们来看看这段文字是不是垂直居中的,我们来看看这段文字是不是垂直居中的,我们来看看这段文字是不是垂直居中的.</p>
</div>
</body>
</html>


但在测试中发现Chrome下demo的高度莫名的减少了(大概只有180px),这里还需要为Chrome单独写个hack
@media screen and (-webkit-min-device-pixel-ratio:0) {
 .demo p{ height:100%;}/*Google Chrome*/
}

最终代码:(支持IE5.5-IE8、FF、Opera、Chrome)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>文字与图片垂直居中</title>
<style type="text/css">
.demo{ display:table-cell; width:400px; height:300px; border:1px solid #d7d7d7; vertical-align:middle;}
.demo i{ display:inline; width:0px; height:100%; vertical-align:middle; zoom:1;}
.demo p{ display:inline; width:100%; vertical-align:middle; zoom:1;}
@media screen and (-webkit-min-device-pixel-ratio:0) {
 .demo p{ height:100%;}/*Google Chrome*/
}
</style>
</head>
<body>
<div class="demo">
 <i></i>
 <p>我们来看看这段文字是不是垂直居中的,我们来看看这段文字是不是垂直居中的,我们来看看这段文字是不是垂直居中的,我们来看看这段文字是不是垂直居中的.</p>
</div>
</body>
</html>

这种实现方法的缺点:增加一个无意义的容器.

原文链接:http://www.iinterest.net/2009/04/06/vertical-align/




在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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值