【发布时间】:2015-12-18 16:42:15
【问题描述】:
我正在尝试使文本在 div 内水平和垂直对齐。我有两种方法:
- 将 div 的 line-height 设置为与其高度相同的值:
<!DOCTYPE html>
<html>
<head>
<style>
div {
border: 1px solid;
text-align: center;
height: 400px;
line-height: 400px;
}
</style>
</head>
<body>
<div>This is the contents.</div>
</body>
</html>
- 将 div 的显示更改为 table-cell:
<!DOCTYPE html>
<html>
<head>
<style>
div {
display: table-cell;
border: 1px solid;
width: 500px;
height: 400px;
text-align: center;
vertical-align: middle;
}
</style>
</head>
<body>
<div><p>This is the contents.</p></div>
</body>
</html>
这两种方法都有效。他们之间似乎有某种联系。而display: table-cell;则是让一个元素显示为<td>。所以我的问题是:<td> 的行高是否与其高度相同?
【问题讨论】:
-
TD 具有vertical-align 属性的特殊功能。这与行高无关。如果您在 P 中添加更多内容,请确保它开始换行,您会看到两种方法之间的巨大差异。
-
嗨@Pangloss,谢谢。所以你的意思是不是每个元素都有垂直对齐属性?我认为它适用于每个容器。
-
没错,它只适用于某些元素。这是一个非常令人困惑的属性。有时它适用于元素本身(即内联元素),有时它适用于内部元素/内容(即 TD)。我建议你谷歌“垂直对齐的工作原理”,并遵循一些详细的解释。
-
嗨@Pangloss,啊,我明白了。我刚刚找到了这个链接:developer.mozilla.org/en-US/docs/Web/CSS/vertical-align,上面写着“vertical-align CSS 属性指定内联或表格单元格框的垂直对齐方式。”这解释了一切,我想。非常感谢您的帮助!!!
标签: css vertical-alignment tablecell