Bootstrap 3.0:如何在同一行上输入文字和文字?


89

我目前正在将网站切换到Bootstrap 3.0。我在表单输入和文本格式方面遇到问题。在Bootstrap 2中起作用的东西在Bootstrap 3中不起作用。

如何在表单输入前后在同一行上获取文本?我将其缩小为示例的Bootstrap 3版本中的“ form-control”类问题。

如何将所有文本和输入都放在一行上?我希望bootstrap 3示例看起来像jsfiddle中的bootstrap 2示例。

JS小提琴示例

<div class="container ">
  <form>
      <h3> Format used to look like this in Bootstrap 2 </h3>
      <div class="row ">
          <label for="return1"><b>Return:</b></label>
          <input id="return1" name='return1' class=" input input-sm" style="width:150px"
                 type="text" value='8/28/2013'>
          <span id='return1' style='color:blue'> +/- 14 Days</span>
      </div>

       <br>   
       <br>   
           <h3> BootStrap 3 Version </h3>

      <div class="row">
          <label for="return2"><b>Return:</b></label>
          <input id="return2" name='return2' class="form-control input input-sm" style="width:150px"
                 type="text" value='8/28/2013'>
          <span id='return2' style='color:blue'> +/- 14 Days</span>
      </div>
  </form>

更新:我将代码更改为可以运行,但是现在无法对齐。有任何想法吗?

<div class="form-group">
<div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
 </div>


它们都是一样的,只是form-control您在bootstrap 3示例中只拥有一个额外的类。
凯尔·尼达姆

1
看一下引导文档中的示例。您在标签getbootstrap.com/css/#forms-horizo​​ntal
保险杠

对不起,但我仍然感到困惑。较低的示例(BS3)具有“ form-control”类,使外观更好。我想要更好的外观,并将文本和输入保持在同一行。我想念什么?
胖子幻想

让我以不同的方式提出问题。我将如何在同一行上将文本字段和输入字段对齐,并在漂亮的列中对齐?看到这个小提琴 jsfiddle.net/fatfantasma/QwkpE。当然,我想在同一行的最右边添加文本。我该怎么做?
胖子幻想

.input-lg增加输入字段的高度,但是我们还需要一个类来调整标签的高度和大小。
Petrus Theron 2013年

Answers:


39

我会将要内联的每个元素放在行内的单独的col-md- * div中。或强制您的元素以内联方式显示。表单控件类显示块,因为引导程序认为应该这样做。


136

直接来自文档http://getbootstrap.com/css/#forms-horizo​​ntal

使用Bootstrap的预定义网格类,通过添加.form-horizontal到表单(不必是<form>)来在水平布局中对齐标签和表单控件组。这样做会.form-groups像网格行一样进行更改,因此不需要.row

样品:

<form class="form-horizontal">
  <div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
    </div>
  </div>
  <div class="form-group">
    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <div class="checkbox">
        <label>
          <input type="checkbox"> Remember me
        </label>
      </div>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">Sign in</button>
    </div>
  </div>
</form>

15
+1。这应该是公认的答案,因为它链接了官方文档
EProgrammerNotFound 2014年

这是仅链接的答案,如果没有被引用的页面更改或删除,则不带示例就不应被接受。
NDM

为什么正确答案是正确答案?这应该是正确的答案!@fat fantasma
JMASTER B

应该将它们包装在一个form-control-static中,请参见下面的答案
rmcsharry16年

2
@Whitecat是根据响应式布局设计的-为了使其在移动设备上也可以使用col-xs- *而不是col-
sm-


13

这些都不适合我,必须使用.form-control-static类。

http://getbootstrap.com/css/#forms-controls-static


1
这确实有帮助。没有这个,标签文本和输入文本与col
Brendan Cody-Kenny

这应该是正确的答案,尤其是如果您希望表格正确包装在较小的设备上
rmcsharry

是的,这对我也有用。col-xs- *列的其他解决方案失败。在BS 3.3.7中,使用“ form-control-static text-right”对我有用。
Neutrino

10

您可以这样做:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <label for="inputType" class="col-sm-2 control-label">Label</label>
        <div class="col-sm-4">
            <input type="text" class="form-control" id="input" placeholder="Input text">
        </div>
    </div>
</form>

小提琴


4

只是给div的母亲“ class =“ col-lg-12””

<div class="form-group">
<div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
 </div>

这将是

<div class="form-group">
<div class="col-lg-12">
  <div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
</div>
</div>

3

我解决该问题的方法只是在网站的主要CSS上为所有文本框添加替代,如下所示:

.form-control {
    display:initial !important;
}

1
这是做什么的?
AgilePro


0

在Bootstrap 4 for Horizo​​ntal元素中,可以.row.col-*-*类一起使用以指定标签和控件的宽度。看到这个链接

如果要在单个水平行上显示一系列标签,表单控件和按钮,则可以使用.form-inline链接获取更多信息。


现在的问题明确规定自举3
blupointmedia

1
我在Bootstrap 4中遇到了同样的问题,我将其发布以帮助其他人
Liam

-2

或者您可以这样做:

<table>
  <tr>
    <td><b>Return:</b></td>
    <td><input id="return1" name='return1' 
              class=" input input-sm" style="width:150px"
              type="text" value='8/28/2013'></td>
  </tr>
</table>

我尝试了以上所有建议,但没有一个起作用。我不想在12列网格中选择固定数量的列。我想要提示和紧随其后的输入,并且希望列根据需要进行拉伸。

是的,我知道,这与引导程序有关。而且您永远不要使用桌子。因为DIV比表格好得多。但是问题在于表,行和单元格实际上在工作。

是的-我确实确实知道有CSS狂热者,而且膝跳反应永远都不会使用TABLE,TR和TD。是的,我确实知道DIV class =“ table”与DIV class =“ row”和DIV class =“ cell”更好得多。除非它不起作用,并且有很多情况。我不认为人们应该盲目地忽略那些情况。有时候TABLE / TR / TD可以很好地工作,并且没有理由仅仅因为它被认为更优雅而使用更复杂,更脆弱的方法。开发人员应该了解各种方法的好处以及权衡,并且没有绝对的规则可以证明DIV更好。

“举例来说,基于这种讨论,我将一些现有的tds和trs转换为div。花了45分钟弄乱了它,试图使所有内容彼此并排,我放弃了。TD在10秒后返回-工作-立即-在所有浏览器上,无需执行任何其他操作。请尝试使我理解-您希望我以其他方式进行操作有什么可能的理由!” 参见[ https://stackoverflow.com/a/4278073/1758051]

还有这个: ”

布局应该很容易。事实上,有文章介绍了如何在CSS中使用页眉和页脚实现动态三列布局,这表明它是一个较差的布局系统。当然,您可以使用它,但是实际上有数百篇有关如何执行此操作的文章。对于表格的类似布局,几乎没有此类文章,因为它显然是显而易见的。无论您对表说什么,而对CSS表示赞成,这一事实都无法解决所有问题:CSS中基本的三列布局通常称为“圣杯”。” [ https://stackoverflow.com/a/4964107/ 1758051]

我还没有找到一种在所有情况下都强制DIV始终排成一列的方法。我不断得到一些琐碎的例子,这些例子并没有真正遇到问题。“响应式”是指提供一种方法,使它们不会总是在列中对齐。但是,如果您确实想要一列,则可能会浪费大量时间来尝试使DIV正常工作。有时,无论狂热者怎么说,都需要使用适当的技术。


2
表没有响应。
Pedro Moreira

每个人都知道表不会将自己重新格式化为非表。但是,如果您需要的是一行,则始终保持一行。您简单地不能使用DIV标签实施此操作。人们的行为就像您一直想要响应,但是您在做什么却使“大多数时间”与“所有时间”混淆了。在撰写本文时,此答案有两个不赞成。如果您同意我在这里的观点,有时您只需要一个TR,那么也让其他人知道。
AgilePro

您有权发表自己的意见,但我认为,普遍共识是,切勿将表用于显示表格数据的其他任何内容。表在其功能和可定制性方面太受限制。如果您仍然需要让div像表的行和列一样流动,请查看flex:css-tricks.com/snippets/css/a-guide-to-flexbox
Pedro Moreira
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.