如何在不同的div中保持对齐textareas?

时间:2016-01-13 18:33:58

标签: html css

我想在两个不同的div中对齐textareas。

以下是尝试过的内容,但不起作用。

.credentials {
  margin-top: -5px;
  background-color: black;
}
label {
  margin-left: 20px;
  color: white;
  vertical-align: middle;
}
textarea {
  vertical-align: middle;
  height: 25px;
  margin-top: 10px;
  margin-left: 30px;
}
.username {
  height: 50px;
}
<div class="credentials">
  <div class="username">
    <label>Username:</label>
    <textarea></textarea>
  </div>
  <div class="key">
    <label>Activation key:</label>
    <textarea></textarea>
  </div>
</div>

它输出以下结果:

enter image description here

2 个答案:

答案 0 :(得分:4)

尝试此CSS表格布局(无标记更改)。将容器div设置为table,将两个内部div设置为table-row,将label + textarea设置为table-cell,使用其他一些CSS调整,请参阅代码段中的注释。

&#13;
&#13;
.credentials {
  display: table;
  width: 100%;
  background: black;
  border-collapse: separate;
  border-spacing: 10px; /*for spacing*/
}
.username, .key {
  display: table-row;
}
label, textarea {
  display: table-cell;
  vertical-align: middle; /*or top/bottom*/
}
label {
  width: 1%; /*small value*/
  white-space: nowrap; /*prevent wrapping*/
  color: white;
}
&#13;
<div class="credentials">
  <div class="username">
    <label>Username:</label>
    <textarea></textarea>
  </div>
  <div class="key">
    <label>Activation key:</label>
    <textarea></textarea>
  </div>
</div>
&#13;
&#13;
&#13;

修改,因为以下评论之一指出使用<input>元素而不是<textarea>,我认为这是有道理的。请参阅更新的代码段。

&#13;
&#13;
.credentials {
  display: table;
  width: 100%;
  background: black;
  border-collapse: separate;
  border-spacing: 10px; /*for spacing*/
}
.credentials .username,
.credentials .key {
  display: table-row;
}
.credentials label,
.credentials input[type="text"],
.credentials input[type="password"]{
  display: table-cell;
  vertical-align: middle;
  padding: 4px;
}
.credentials label {
  width: 1%; /*small value*/
  white-space: nowrap; /*prevent wrapping*/
  color: white;
}
&#13;
<div class="credentials">
  <div class="username">
    <label>Username:</label>
    <input type="text">
  </div>
  <div class="key">
    <label>Activation key:</label>
    <input type="password">
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

实现这一目标的方法不止一种,Pangloss的答案很好,但我还想在不触及代码的情况下提出不同的建议。

我绝不会将textarea用于此类工作

calc是一个相对较新的东西,请检查您的搜索引擎以获取更多信息

如果您不知道css中的<选择器,我建议您查看over here

.credentials {
  background-color: rgb(0, 0, 0);
  color: rgb(255, 255, 255);
  /*fallback color if nothing is found*/
}
.credentials > div > label {
  display: inline-block;
  min-width: 150px;
  /*maximum width of label*/
  text-align: right;
  /*style*/
  padding: 5px;
  /*style*/
}
/*extra to make sure it never flip under label and stay inside view*/

.credentials > div > textarea {
  max-width: calc(100% - (150px + 5px + 5px + 8px + 8px + 1px + 1px));
  /* min-width + padding-left + padding-right + margin-left + margin-right + border-left + border right OR just 178px */
}
<div class="credentials">
  <div class="username">
    <label>Username:</label>
    <textarea></textarea>
  </div>
  <div class="key">
    <label>Activation key:</label>
    <textarea></textarea>
  </div>
</div>