我有这个HTML表单:
<form method="post" action="#" class="cf">
<div class="left">
<label for="first-name">First Name</label>
<input type="text" name="first-name" placeholder="First Name" id="first-name" required />
<label for="last-name">Middle Name</label>
<input type="text" name="middle-name" placeholder="Middle Name" id="middle-name" />
<label for="last-name">Last Name</label>
<input type="text" name="last-name" placeholder="Last Name" id="last-name" required />
</div>
<div class="right">
<label for="details">Details</label>
<textarea name="details" placeholder="Details" id="details" required></textarea>
</div>
<input type="submit" name="submit" value="Submit Form" />
</form>
这是我的CSS:
/* Clearfix */
.cf:before,.cf:after { content: " "; display: table; }
.cf:after { clear: both; }
form > * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.left {
background: rgba(255, 0, 0, .2);
}
.right {
background: rgba(0, 255, 0, .2);
}
form {
background: #ccc;
}
input[type="text"],
textarea {
width: 100%;
border: none;
}
input[type="text"] {
margin-bottom: 10px;
}
label {
display: inline-block;
margin-bottom: 5px;
}
@media only screen and (min-width: 600px) {
form {
background: rgba(0, 0, 255, .3);
}
.left {
float: left;
width: 50%;
}
.right {
float: right;
width: 50%;
}
input[type="submit"] {
clear: both;
}
}
小提琴
http://jsfiddle.net/gRRmh/
基本上它是三个文本输入字段,一个文本区域和一个提交按钮(又名输入类型提交)。到达断点时,表单会变成两列布局。这就是起作用的部分。
不工作的部分是文本区域的高度。我希望它与左侧的三个输入字段的高度相同。
将其设置为height: 100%;
不起作用有两个原因:
- 需要考虑标签的高度。当然,我可以给它一个百分比高度,然后从 textarea 的高度中减去该值(10% / 90%)......
- ...但是要使它起作用,一个父元素需要一个固定的高度,所以我需要给表单例如高度为 200px。问题是我实际上需要手动匹配左列的高度,这并不是一个好的解决方案。
所以我真正在寻找的是类似以下的东西,只是没有手动轻推像素:( 如果你愿意,也可以使用小提琴,但请注意:它有点乱。http: //jsfiddle.net/mnBEh/1/)
如何解决这个问题呢?