162

再次更新:我通过选择最佳答案来结束这个问题,以防止人们在没有真正理解问题的情况下添加答案。实际上,如果不使用网格或添加额外的 css,就无法使用内置功能来做到这一点。例如,如果您正在处理help-block需要超出简短输入但它们是“内置”的元素,那么网格就不能很好地工作。如果这是一个问题,我建议您使用额外的 css 类,您可以在 BS3 讨论中找到这些类此处的 BS3 讨论中找到这些类。现在 BS4 已经推出,可以使用包含的尺寸样式来管理它,因此这不会在更长时间内相关。感谢大家对这个流行的 SO 问题的良好投入。

更新:这个问题仍然悬而未决,因为它是关于内置的功能来管理输入宽度而不诉诸网格(有时它们必须独立管理)。我已经使用自定义类来管理它,所以这不是基本 css 的操作方法。该任务在 BS功能讨论列表中,尚未解决。

原始问题: 有人想出一种在 BS 3 上管理输入宽度的方法吗?我目前正在使用一些自定义类来添加该功能,但我可能错过了一些未记录的选项。

当前的文档说使用 .col-lg-x 但这显然不起作用,因为它只能应用于容器 div ,然后会导致各种布局/浮动问题。

这是一个小提琴。奇怪的是,在小提琴上我什至无法让表单组调整大小。

http://jsfiddle.net/tX3ae/

<form role="form" class="row">
    <div class="form-group col-lg-1">
        <label for="code">Name</label>
        <input type="text" class="form-control">
    </div>

    <div class="form-group col-lg-1 ">
        <label for="code">Email</label>
        <input type="text" class="form-control input-normal">
    </div>

    <button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
4

17 回答 17

101

你想做的事情当然是可以实现的。

你想要的是将每个“组”包装成一行,而不是整个表格只有一行。这里:

<div class="container">
    <h1>My form</h1>
    <p>How to make these input fields small and retain the layout.</p>
    <form role="form">
        <div class="row">
            <div class="form-group col-lg-1">
                <label for="code">Name</label>
                <input type="text" class="form-control" />
            </div>
        </div>

        <div class="row">
            <div class="form-group col-lg-1 ">
                <label for="code">Email</label>
                <input type="text" class="form-control input-normal" />
            </div>
        </div>
        <div class="row">
            <button type="submit" class="btn btn-default">Submit</button>
        </div>
    </form>
</div>

我制作的新 jsfiddle: 新的 jsfiddle

请注意,在新的小提琴中,我还添加了“col-xs-5”,因此您也可以在较小的屏幕上看到它 - 删除它们没有任何区别。但请记住,在您原来的课程中,您只使用“col-lg-1”。这意味着如果屏幕宽度小于“lg”媒体查询大小,则使用默认块行为。基本上只应用'col-lg-1',你使用的逻辑是:

IF SCREEN WIDTH < 'lg' (1200px by default)

   USE DEFAULT BLOCK BEHAVIOUR (width=100%)

ELSE

   APPLY 'col-lg-1' (~95px)

有关详细信息,请参阅Bootstrap 3 网格系统。我希望我很清楚,否则让我知道,我会详细说明。

于 2013-11-02T08:01:57.307 回答
71

在引导程序 3 中

您可以简单地创建自定义样式:

.form-control-inline {
    min-width: 0;
    width: auto;
    display: inline;
}

然后将其添加到表单控件中,如下所示:

<div class="controls">
    <select id="expirymonth" class="form-control form-control-inline">
        <option value="01">01 - January</option>
        <option value="02">02 - February</option>
        <option value="03">03 - March</option>
        <option value="12">12 - December</option>
    </select>
    <select id="expiryyear" class="form-control form-control-inline">
        <option value="2014">2014</option>
        <option value="2015">2015</option>
        <option value="2016">2016</option>
    </select>
</div>

这样您就不必在 HTML 中为布局添加额外的标记。

于 2014-06-03T06:48:54.460 回答
25

ASP.net MVC 转到 Content-Site.css 并删除或注释此行:

input,
select,
textarea {
    /*max-width: 280px;*/
}
于 2015-04-24T15:09:28.280 回答
11

我认为您需要将输入包装在 acol-lg-4中,然后在a 中,并且form-group所有内容都包含在form-horizontal..

    <form class="form form-horizontal">
         <div class="form-group">
           <div class="col-md-3">
            <label>Email</label>
            <input type="email" class="form-control" id="email" placeholder="email">
           </div>
         </div>
         ...
     </form>

Bootply 演示 - http://bootply.com/78156

编辑:来自 Bootstrap 3 文档..

Bootstrap 中的输入、选择和文本区域默认为 100% 宽。要使用内联表单,您必须在其中使用的表单控件上设置宽度。

所以另一种选择是使用 CSS 设置特定宽度:

.form-control {
    width:100px;
}

或者,将 应用于col-sm-*“form-group”。

于 2013-08-31T09:43:49.487 回答
10

当前的文档说使用 .col-xs-x ,没有 lg。然后我尝试小提琴,它似乎工作:

http://jsfiddle.net/tX3ae/225/

为了保持布局,也许您可​​以更改放置类“行”的位置,如下所示:

<div class="container">
  <h1>My form</h1>
  <p>How to make these input fields small and retain the layout.</p>
  <div class="row">
    <form role="form" class="col-xs-3">

      <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" id="name" name="name" >
      </div>

      <div class="form-group">
        <label for="email">Email</label>
        <input type="text" class="form-control" id="email" name="email">
      </div>

      <button type="submit" class="btn btn-default">Submit</button>
    </form>
  </div>
</div>

http://jsfiddle.net/tX3ae/226/

于 2014-12-17T09:45:37.037 回答
9
<div class="form-group col-lg-4">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
</div>

将类添加到 form.group 以约束输入

于 2013-08-30T19:00:17.257 回答
6

如果您在 Visual Studio 15 中使用 Master.Site 模板,则基础项目具有覆盖表单控制字段宽度的“Site.css”。

我无法让我的文本框的宽度变得比大约 300 像素宽。我尝试了一切,但没有任何效果。我发现 Site.css 中有一个设置导致了问题。

摆脱这个,你可以控制你的字段宽度。

/* Set widths on the form inputs since otherwise they're 100% wide */
input[type="text"],
input[type="password"],
input[type="email"],
input[type="tel"],
input[type="select"] {
    max-width: 280px;
}
于 2016-10-19T20:27:13.217 回答
5

我知道这是一个旧线程,但我在使用内联表单时遇到了同样的问题,并且上述选项都没有解决这个问题。所以我修复了我的内联表单,如下所示: -

<form class="form-inline" action="" method="post" accept-charset="UTF-8">
    <div class="row">
        <div class="form-group col-xs-7" style="padding-right: 0;">
            <label class="sr-only" for="term">Search</label>
            <input type="text" class="form-control" style="width: 100% !important;" name="term" id="term" placeholder="Search..." autocomplete="off">
            <span class="help-block">0 results</span>
        </div>
        <div class="form-group col-xs-2">
            <button type="submit" name="search" class="btn btn-success" id="search">Search</button>
        </div>
    </div>
</form>

那是我的解决方案。有点hacky hack,但是为​​内联表单做了这项工作。

于 2016-02-05T01:53:30.303 回答
4

您可以添加样式属性,也可以在 css 文件中添加输入标记的定义。

选项 1:添加样式属性

<input type="text" class="form-control" id="ex1" style="width: 100px;">


选项 2:在 css 中定义

input{
  width: 100px
}

您可以在自动更改 100px

我希望我能帮上忙。

于 2016-04-15T16:34:15.500 回答
3

您不必放弃简单的 css :)

.short { max-width: 300px; }
<input type="text" class="form-control short" id="...">
于 2015-04-10T13:27:37.090 回答
3

在引导程序 3 中

所有带有 .form-control 的文本 <input>、<textarea> 和 <select> 元素都设置为 width: 100%;默认。

http://getbootstrap.com/css/#forms-example

看来,在某些情况下,我们必须手动设置输入所需的最大宽度。

无论如何,您的示例有效。只需在大屏幕上查看,您就可以看到姓名和电子邮件字段是 with 的 2/12(col-lg-1 + col-lg-1,您有 12 列)。但是,如果您的屏幕较小(只需调整浏览器的大小),输入将扩展到行尾。

于 2013-11-03T16:44:37.477 回答
2

如果您想根据自己的喜好简单地减少或增加 Bootstrap 输入元素的宽度,我会max-width在 CSS 中使用。

这是我创建的一个非常简单的示例:

    <form style="max-width:500px">

    <div class="form-group"> 
    <input type="text" class="form-control" id="name" placeholder="Name">
    </div>

    <div class="form-group">
    <input type="email" class="form-control" id="email" placeholder="Email Address">
    </div>

    <div class="form-group">
    <textarea class="form-control" rows="5" placeholder="Message"></textarea>
    </div>   

    <button type="submit" class="btn btn-primary">Submit</button>
    </form>

我已将整个表单的最大宽度设置为 500 像素。这样你就不需要使用任何 Bootstrap 的网格系统,它也会保持表单响应。

于 2014-08-22T22:31:07.923 回答
1

我也遇到了同样的问题,这是我的解决方案。

HTML 源代码

<div class="input_width">
    <input type="text" class="form-control input-lg" placeholder="sample">
</div>

用另一个 div 类覆盖输入代码

CSS 源码

.input_width{
   width: 450px;
}

在覆盖的 div 类上提供任何宽度或边距设置。

Bootstrap 的输入宽度始终默认为 100%,因此宽度遵循覆盖的宽度。

这不是最好的方法,而是我解决问题的最简单和唯一的解决方案。

希望这有帮助。

于 2015-10-15T16:24:43.017 回答
0

Bootstrap 3 我使用以下方法实现了一个很好的响应式表单布局:

<div class="row">
    <div class="form-group  col-sm-4">
        <label for=""> Date</label>
        <input type="date" class="form-control" id="date" name="date" placeholder=" date">
    </div>

    <div class="form-group  col-sm-4">
        <label for="hours">Hours</label>
        <input type="" class="form-control" id="hours" name="hours" placeholder="Total hours">
    </div>
</div>
于 2016-01-30T14:23:34.187 回答
0

为输入字段添加和定义术语style="",这是最简单的方法:示例:

<form>
    <div class="form-group">
        <label for="email">Email address:</label>
        <input type="email" class="form-control" id="email" style="width:200px;">
    </div>
    <div class="form-group">
        <label for="pwd">Password:</label>
        <input type="password" class="form-control" id="pwd" style="width:200px">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>
于 2017-03-01T12:57:04.073 回答
0

我不知道为什么每个人似乎都忽略了 Content 文件夹中的 site.css 文件。查看此文件中的第 22 行,您将看到要控制的输入设置。您的站点似乎没有引用此样式表。

我添加了这个:

input, select, textarea { max-width: 280px;}

到你的小提琴,它工作得很好。

你永远不应该更新 bootstrap.css 或 bootstrap.min.css。这样做会使您在引导程序更新时失败。这就是包含 site.css 文件的原因。在这里,您可以对网站进行更改,仍然可以为您提供您正在寻找的响应式设计。

这是它的工作原理

于 2016-02-22T04:20:30.413 回答
0

Bootstrap 使用“表单输入”类来控制“输入字段”的属性。简单地说,在您的 css 文件或 head 部分中添加您自己的具有所需宽度、边框、文本大小等的“表单输入”类。

(或者,直接在正文部分的输入属性中添加 size='5' 内联代码。)

<script async src="//jsfiddle.net/tX3ae/embed/"></script> 
于 2017-08-15T16:19:24.603 回答