我想在两个不同的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>
它输出以下结果:
答案 0 :(得分:4)
尝试此CSS表格布局(无标记更改)。将容器div
设置为table
,将两个内部div
设置为table-row
,将label
+ textarea
设置为table-cell
,使用其他一些CSS调整,请参阅代码段中的注释。
.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;
修改,因为以下评论之一指出使用<input>
元素而不是<textarea>
,我认为这是有道理的。请参阅更新的代码段。
.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;
答案 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>