如何使 Bootstrap 输入字段与其父项一样宽 100%?
正如 steve-obrien 在Bootstrap 问题 #1058中所写:
当直接应用于输入字段时,设置为 100% 不起作用,因为它没有考虑填充。所以你最终会得到 100% 的容器加上输入框上的填充,所以输入框通常会在其容器之外中断。
那张票提供了各种解决方案,但我正在寻找最好的方法——最好是 Bootstrap 已经提供的 CSS 类。
如何使 Bootstrap 输入字段与其父项一样宽 100%?
正如 steve-obrien 在Bootstrap 问题 #1058中所写:
当直接应用于输入字段时,设置为 100% 不起作用,因为它没有考虑填充。所以你最终会得到 100% 的容器加上输入框上的填充,所以输入框通常会在其容器之外中断。
那张票提供了各种解决方案,但我正在寻找最好的方法——最好是 Bootstrap 已经提供的 CSS 类。
input-block-level
在各种屏幕宽度上应用该课程对我来说非常有用。它由Bootstrapmixins.less
定义如下:
// Block level inputs
.input-block-level {
display: block;
width: 100%;
min-height: 28px; // Make inputs at least the height of their button counterpart
.box-sizing(border-box); // Makes inputs behave like true block-level elements
}
这与 'assembler' 在他对问题 #1058 的评论中建议的风格非常相似。
Just add box-sizing:
input[type="text"] {
box-sizing: border-box;
}
如果您使用 C# ASP.NET MVC 的默认模板,您可能会发现site.css覆盖了一些 Bootstraps 样式。如果你想像我一样使用 Bootstrap,让 M$ 覆盖它(在你不知情的情况下)可能会让人非常沮丧!随意删除任何不需要的样式...
/* Set width on the form input elements since they're 100% wide by default */
input,
select,
textarea {
max-width: 280px;
}
对于任何在谷歌上搜索的人,一个建议是删除所有input-group
类实例。在类似的情况下为我工作。原始代码:
<form>
<div class="bs-callout">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" name="time" placeholder="Time">
</div>
</div>
</div>
<div class="col-md-8">
<div class="form-group">
<div class="input-group">
<select name="dtarea" class="form-control">
<option value="1">Option value 1</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="input-group">
<input type="text" name="reason" class="form-control" placeholder="Reason">
</div>
</div>
</div>
</form>
新代码:
<form>
<div class="bs-callout">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<input type="text" class="form-control" name="time" placeholder="Time">
</div>
</div>
<div class="col-md-8">
<div class="form-group">
<select name="dtarea" class="form-control">
<option value="1">Option value 1</option>
</select>
</div>
</div>
</div>
<div class="row">
<input type="text" name="reason" class="form-control" placeholder="Reason">
</div>
</div>
</form>
为了得到想要的结果,你必须设置“box-sizing:border-box”而不是默认的“box-sizing:content-box”。这正是您所指的问题(来自 MDN):
这是 CSS 标准指定的初始值和默认值。测量宽度和高度属性仅包括内容,但不包括填充、边框或边距。
宽度和高度属性包括内容、内边距和边框,但不包括边距。”
参考:https ://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing
这个 CSS 的兼容性很好。
使用.container-fluid
,如果你想全宽作为父级,跨越你的视口的整个宽度。
关于什么?
input[type="text"] {
max-width:none;
}
检查某些 css 文件是否导致问题。默认情况下,引导程序显示在整个宽度上。例如,在 MVC 目录中,内容是 site.css,并且有一个定义限制宽度。
input,select,textarea {
max-width: 280px;}
只需添加:
width: 100% !important;