我正在尝试构建一个表单模块,这样无论表单可能具有哪些输入,都始终满足以下条件:
inline-block
与text-align: center
相结合。)基本上,我想要以下内容:
这种类型的布局对于表格来说很容易,但我已经读过表格不适合用于表格,所以我的问题是,如何在不使用表格的情况下完成所有这些操作?
谢谢。
修改:布局必须在IE8中运行。
答案 0 :(得分:1)
您可以使用flex
完成所需的行为。
HTML结构(这只是一种方法):
<div id="container">
<div class="form-container">
<form>
<div class="column">
<label for="text1">This is a label</label>
<label for="text2">Label</label>
<label for="text3" style="flex-grow:2;">Another larger label :D</label>
<label for="text4">A short one!</label>
</div>
<div class="column">
<input type="text" name="text1" />
<input type="text" name="text2" />
<textarea name="text4" style="flex-grow:2;"></textarea>
<input type="text" name="text3" />
</div>
</form>
</div>
</div>
CSS:
#container {
text-align: center;
}
#container .form-container {
display: inline-block;
}
#container form {
background: #eee;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
padding: 20px;
}
#container form .column {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
}
#container form .column label {
padding: 2px;
text-align: right;
}
#container form .column input,
#container form .column textarea {
align-self: flex-start;
width: 200px;
}
这是一个有效的演示:http://jsfiddle.net/gopafm4g/2/