我在网页上有一行。它有三个控件
SomeText Input Button
It is like this
<div> SomeText <Input/> <img> </div>
上面的img是浮动的
现在我的输入大小为30,但是小分辨率30对于行来说太大了,它会分成两行。
我希望输入宽度最大可用而不是固定宽度。
如果我尝试size = 100%,则需要整行开始在新行中完成推送文本和img的上方和下方。
如何格式化此行?
答案 0 :(得分:3)
在简单的情况下:
<div>
<label for="thing">SomeText</label>
<input type="text" id="thing" />
<img />
</div>
div label { float: left; width: 20%; }
div input { width: 60%; }
这假设SomeText可以很好地适应你所拥有的宽度的20%。
但也许不会。
如果你想在两侧有固定大小的元素(例如每个8em
)并从输入的宽度中减去那些元素,你需要说100% minus 16em
。不幸的是,CSS没有这样的表达式计算功能。您可以管理的最好方法是添加包装器以使100%
与您真正想要的内容相对应:
<div>
<label for="thing">SomeText</label>
<img />
<div>
<input type="text" id="thing" />
</div>
</div>
div label { float: left; width: 8em; }
div img { float: right; width: 8em; }
div div { margin-left: 8em; margin-right: 8em; }
div div input { width: 100%; }
它有点难看,因为你必须为浮动(或使用绝对定位)提示标记顺序。此时,您可能最好放弃并使用表格来获得所需的宽度:
<table><tr>
<td class="label"><label for="thing">SomeText</label></td>
<td class="input"> <input type="text" id="thing" /></td>
<td class="img"> <img /></td>
</tr></table>
table { table-layout: fixed; width: 100%; }
tabel .label, table .img { width: 8em; }
table input { width: 100%; }
有些复杂的液体布局形式通常超出了CSS定位的功能,需要表格帮助。
(无论哪种方式,输入上的一些盒子大小调整也可以帮助排列。)