编辑:请注意,这个答案对 Bootstrap v2.3.x 有效。Bootstrap 3 已经原生解决了这个问题(参见 doc)。
受 A lee 的回答启发,这是我改进的解决方案(包括追加和前置、最小可能的附加宽度、删除不必要的样式、自动高度......)。在 Bootstrap CSS/LESS 文件之后包含这个:
.input-append.input-block-level,
.input-prepend.input-block-level {
display: table;
}
.input-append.input-block-level .add-on,
.input-prepend.input-block-level .add-on {
display: table-cell;
width: 1%; /* remove this if you want default bootstrap button width */
}
.input-append.input-block-level > input,
.input-prepend.input-block-level > input {
box-sizing: border-box; /* use bootstrap mixin or include vendor variants */
-moz-box-sizing: border-box; /* for Firefox */
display: table; /* table-cell is not working well in Chrome for small widths */
min-height: inherit;
width: 100%;
}
.input-append.input-block-level > input {
border-right: 0;
}
.input-prepend.input-block-level > input {
border-left: 0;
}
在您的 HTML 中像这样使用它并记住,在这种情况下,您必须使用a
标签而不是button
按钮:
<div class="input-append input-block-level">
<input type="text" />
<a class="btn add-on">click</a>
</div>
编辑:在 IE8 中,如果您设置display: table
为.input-append.input-block-level > input
,输入标签将变为不可编辑,尽管获得焦点。
完全省略此display:
参数使其在 IE8 以及当前的 Chrome/Safari/Firefox 中按预期工作。