如何垂直对齐与其 dd 标签相关的 dt 标签?

How to vertical align dt tags in relation to its dd tags?

我有这个html:

<dl>
    <dt><label for='txaText'>Text</label></dt>
    <dd><textarea id='txaText'></textarea></dd>
</dl>

和这个 css:

dt {
  float: left;
  text-align: right;
  width: 30%;
  padding-right:5px;
}
dd {
  width: 70%;
  margin: 0;
}

但我明白了:

我想要这个:

如何实现 dt 标签相对于其各自 dd 标签的垂直对齐?我可以在不使用可怕的技巧(例如创建 div 或为每个标签指定像素高度)的情况下执行此操作吗?

我想我想出了一个您可能会喜欢的解决方案,您可以将元素设置为 display:table-cellvertical-align:middle 以对齐它们。

CSS:

dl{
   border: 1px solid red;
}

dt {
  display:table-cell;
  vertical-align:middle;
  width: 30%;
  padding-right:5px;
}
dd {
  display:table-cell;
  vertical-align:middle;
  width: 70%;
  margin: 0;
}

已为您更新CODEPEN DEMO

You can try this code.

html code:

<dl>
    <dt><label for='txaText'><br>Text</label></dt>
    <dd><textarea id='txaText'></textarea></dd>
</dl>

and this css code:

dt {
  float: left;
  text-align: right;
  width: 30%;
  padding-right:5px;
}
dd {
  width: 70%;
  margin: 0;
}

我刚遇到这个问题,想为找到这个问题的其他人提供一个 flexbox 答案。 Flexbox 使这项任务变得非常简单,这对开发人员来说非常好!

dl {
  display: flex;
  align-items: center;
}