文本如何垂直居中?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
div{
    width:300px;
    height:70px;
    border:1px solid red;
    font-size:30px;
    line-height:70px;
    vertical-align:middle; 
    text-align:center;
    padding:0px;
    margin:0px;
}
</style>
</head>
<body>
    <div>
        <p>hello world</p>
    </div>
</body>
</html>

效果如下:

图片描述

ling-height = div的height 不起作用?
vertical-align:middle; 也不起作用。

图片描述

阅读 2.4k
4 个回答

看这么多大神都给你答案了,你还没有采纳,我决定来个终极答案;
且看图:
图片描述
图蓝色区域是div元素的盒子,砖红色区域是div块级元素的占位
图片描述
图蓝色区域是p元素的盒子,上下的砖红色区域是p元素在chrome中的默认margin值,浏览器显示是1em;
那这个1em是多少呢,em是一个相对单位,相对于父容器的文字大小
也就是说,父容器font-size多大,子容器中1em就是多大,那这里父容器font-size是35px那这个上margin和下margin就各是35px;
另外:你p标签没有设置文字大小,其继承了父容器的font-size,所以p中文本字号也是35px

解释了你的问题,然后再给你一个解决方案,怎么让文字垂直居中呢,简单了,去掉margin就OK
图片描述

你把div限制死了,p溢出来了当然不居中
你把css里的div 改成p就居中了

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
p{
    width:300px;
    height:70px;
    border:1px solid red;
    font-size:30px;
    line-height:70px;
    vertical-align:middle; 
    text-align:center;
    padding:0px;
    margin:0px;
}
</style>
</head>
<body>
    <div>
        <p>hello world</p>
    </div>
</body>
</html>

文本是根据行高来的啊, line-height:70px;如果你去掉了默认的内外边距,你标记的那段距离应该是35左右

父级:

display: table-cell;
vertical-align: middle;
height: 65px;
width: 65px;

子级:

display: inline-block;
vertical-align: middle;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题