我有一个有两排的桌子.第一行包含一个input,第二行包含一个select.即使我将宽度设置为100%,选择框也比输入小几个像素.任何想法为什么会这样,我怎么能以一种适用于所有(A级)浏览器的方式将它们的宽度设置为彼此相等并尽可能大(例如%100)?
<table width="100%" style="margin-top: 5px;">
<tr>
<td width="35"><label for="desc">Description</label></td>
<td>
<input type="text" style="width: 100%;" name="desc" id="desc" />
</td>
</tr>
<tr>
<td width="35"><label for="group">Group</label></td>
<td>
<select id="group" name="group" style="width: 100%; line-height: 17px;">
<option value="val">name</option>
</select>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
Jim*_*Jim 10
这是因为使用<input>时,边框和填充会添加到宽度上(与大多数其他元素一样).使用<select>,边框和填充包含在宽度中,就像在旧的IE怪癖模式中一样.
如果你知道宽度(以像素为单位),你可以通过增加宽度来考虑这个问题:
input { width: 200px; padding: 10px; border-width:5px; }
select { width: 230px; padding: 10px; border-width:5px; }
Run Code Online (Sandbox Code Playgroud)
或者(如果您可以依赖浏览器支持),您可以使用新的CSS3 box-sizing属性使它们表现一致,并在元素宽度之外绘制填充和边框:
input, select {
width: 200px;
padding: 10px;
border-width:5px;
-webkit-box-sizing: content-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: content-box; /* Firefox, other Gecko */
box-sizing: content-box; /* Opera/IE 8+ */
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以将box-sizing设置为border-box,使输入的行为与选择相似,并在框的宽度内绘制填充.
在Chrome,IE8,FF中测试过
| 归档时间: |
|
| 查看次数: |
2761 次 |
| 最近记录: |