如果您还希望在同一行上对齐顶部、中间和底部的文本,那么可以扩展 @Thameem 的答案以获得更完整的定位解决方案:
<table style="width:100%; height: 100%;">
<tr>
<td style="text-align:left; vertical-align: top;">top left</td>
<td style="text-align:center; vertical-align: top;">top center</td>
<td style="text-align:right; vertical-align: top;">top right</td>
</tr>
<tr>
<td style="text-align:left; vertical-align: middle;">middle left</td>
<td style="text-align:center; vertical-align: middle;">middle center</td>
<td style="text-align:right; vertical-align: middle;">middle right</td>
</tr>
<tr>
<td style="text-align:left; vertical-align: bottom;">bottom left</td>
<td style="text-align:center; vertical-align: bottom;">bottom center</td>
<td style="text-align:right; vertical-align: bottom;">bottom right</td>
</tr>
</table>
使用 HTML 自定义元素和一些 CSS,您可以选择使其更具可读性:
<position>
<top>
<left>top left</left><centre>top centre</centre><right>top right</right>
</top>
<middle>
<left>middle left</left><centre>middle centre</centre><right>middle right</right>
</middle>
<bottom>
<left>bottom left</left><centre>bottom centre</centre><right>bottom right</right>
</bottom>
</position>
以及相应的CSS:
position {
display: table;
table-layout: fixed;
height: 100%;
width: 100%;
}
top {
display: table-row;
}
top * {
vertical-align: top;
}
middle {
display: table-row;
}
middle * {
vertical-align: middle;
}
bottom {
display: table-row;
}
bottom * {
vertical-align: bottom;
}
left {
display: table-cell;
text-align: left;
}
centre {
display: table-cell;
text-align: center;
}
right {
display: table-cell;
text-align: right;
}
请注意在某些地方使用“中心”而不是“中心”的英式拼写。我不是英国人,但这样做是为了避免与现有的 HTML“中心”元素及其内置样式发生冲突。如果您碰巧知道样式的神奇组合来覆盖“中心”元素,我很想听听。
你也可以用它来做更少的职位:
<position>
<middle>
<centre>centre</centre>
</middle>
</position>
但要小心在“行”(顶部、中间、底部)之间使用相同的“列”(左、中、右)集,因为从技术上讲,它仍然是下面的表格。
我意识到我可能在这个例子中犯了一些编程罪:
- 混合内容和布局
- 不命名我的自定义元素(如果我选择的名称恰好被库或 HTML/XML 规范使用,这可能涉及命名冲突)
- 不使用更现代的 flex 布局
- 等等
请原谅我。
我发现使用其他解决方案很难实现类似的布局。我希望这可以帮助其他有类似要求的人。