标签在左侧而不是输入字段上方


104

我希望标签不在输入字段上方,而在左侧。

<form method="post" action="" role="form" class="form-inline">
  <div class="form-group">
    <label for="rg-from">Ab: </label>
    <input type="text" id="rg-from" name="rg-from" value="" class="form-control">
  </div>
  <div class="form-group">
    <label for="rg-to">Bis: </label>
    <input type="text" id="rg-to" name="rg-to" value="" class="form-control">
  </div>
  <div class="form-group">
    <input type="button" value="Clear" class="btn btn-default btn-clear"> 
    <input type="submit" value="Los!" class="btn btn-primary">
  </div>
</form>

这段代码给了我:

Code_Result_Bootstrap_3_Label

我想拥有:

Desired_Result_Bootstrap_3_Label

Answers:


85

您可以为每个表单组使用form-inline类:)

<form>                      
    <div class="form-group form-inline">                            
        <label for="exampleInputEmail1">Email address</label>
            <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
    </div>
</form>

谢谢。标签之后,我有一个div输入组,默认将其自身设置为width:100%。需要将该div覆盖到50%。然后,标签和输入组(日期选择器)将放在一行中。(我希望它是干净的,但不能覆盖。)
Turbo

2
不,您不需要覆盖它。只需尝试使用网格选项,例如“ row”和“ col- *”。
gvgramazio

1
这应该是公认的答案。这说明form-group可以继承form-inline以使内联单个表单组而不是表单的父类。
Cowbert

注意:就我而言,我需要将INPUT放入DIV
AlexNikonov

56

<label>外面form-group

<form class="form-inline">
  <label for="rg-from">Ab: </label>
  <div class="form-group">
    <input type="text" id="rg-from" name="rg-from" value="" class="form-control">
  </div>
  <!-- rest of form -->
</form>

有趣的是,这可行,但是bootstrap的文档没有显示该信息。它在表单组中显示标签
steveareeno,

14

Bootstrap 3文档在CSS文档标签的“要求自定义宽度”部分中对此进行了说明,其中指出:

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

如果您使用浏览器以及Firebug或Chrome工具来抑制或减小“宽度”样式,则应该看到它们按照您想要的方式排列。显然,您可以创建适当的CSS来解决此问题。

但是,我觉得完全需要这样做很奇怪。我忍不住觉得这种操作既烦人,而且从长远来看,容易出错。最终,我使用了一个哑类和一些JS对所有内联输入进行全局填充。这是少数案件,因此没有太大的问题。

尽管如此,我也很想听听有“正确”解决方案的人的来信,并且可以消除我的填充程序/破解。

希望这会有所帮助,并为您提供建议,避免在所有忽略了Bootstrap 3要求的人面前丢下垫圈。


2
例如,使标签的宽度为col-sm-2并输入col-sm-10呢?
niico 2016年

13

您可以使用两种方法在标签和表单控件位于一侧的情况下创建此类表单-

1.内联表单布局

<form class="form-inline" role="form">
    <div class="form-group">
        <label for="inputEmail">Email</label>
        <input type="email" class="form-control" id="inputEmail" placeholder="Email">
    </div>
    <div class="form-group">
        <label for="inputPassword">Password</label>
        <input type="password" class="form-control" id="inputPassword" placeholder="Password">
    </div>
    <button type="reset" class="btn btn-default">Reset</button>
    <button type="submit" class="btn btn-primary">Login</button>
</form>

2.水平表格布局

<form class="form-horizontal">
    <div class="row">
        <div class="col-sm-4">
            <div class="form-group">
                <label for="inputEmail" class="control-label col-xs-3">Email</label>
                <div class="col-xs-9">
                    <input type="email" class="form-control" id="inputEmail" placeholder="Email">
                </div>
            </div>
        </div>
        <div class="col-sm-5">
            <div class="form-group">
                <label for="inputPassword" class="control-label col-xs-3">Password</label>
                <div class="col-xs-9">
                    <input type="password" class="form-control" id="inputPassword" placeholder="Password">
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <button type="reset" class="btn btn-default">Reset</button>
            <button type="submit" class="btn btn-primary">Login</button>
        </div>
    </div>
</form>

您可以查看此页面以获取更多信息和实时演示-http: //www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-forms.php


解决方案1对我不起作用。标签仍在输入控件上方。candu的解决方案可以满足我的要求,但这是正确的方法吗?
Kit Fisto

8

像这样

演示

的HTML

<div class="row">
  <form class="form-inline">
    <fieldset>
      <label class="control-label"><strong>AB :</strong></label>
      <input type="text" class="input-mini" >
      <label class="control-label"><strong>BIS:</strong></label>
      <input type="text" class="input-mini" >
      <input type="button" value="Clear" class="btn btn-default btn-clear">
      <input type="submit" value="Los!" class="btn btn-primary">
    </fieldset>
  </form>
</div>

4
这是Bootstrap v2.1.0的解决方案,但不是Bootstrap v3.0.0的解决方案
Stefan Vogt

3
Bootstrap 3中也存在“ form-inline”,我认为这是关键:+1
Per Quested Aronsson

7

我有同样的问题,这是我的解决方案:

<form method="post" class="form-inline form-horizontal" role="form">
        <label class="control-label col-sm-5" for="jbe"><i class="icon-envelope"></i> Email me things like this: </label>
        <div class="input-group col-sm-7">
            <input class="form-control" type="email" name="email" placeholder="your.email@example.com"/>
            <span class="input-group-btn">
                <button class="btn btn-primary" type="submit">Submit</button>
            </span>
        </div>
    </form>

这是演示


5

您必须像这样浮动所有元素:

.form-group,
.form-group label,
.form-group input { float:left; display:inline;   }

给所需元素一些余量:

 .form-group { margin-right:5px }

并将标签设置为与字段高度相同的行高:

.form-group label { line-height:--px; }

5

您可以从现有答案中看出Bootstrap的术语令人困惑。如果查看引导程序文档,您会发现form-horizo​​ntal类实际上是一个字段彼此向下的窗体,即大多数人会认为它是垂直窗体。跨页面的表单的正确类是form-inline。他们可能引入了内一词,因为他们已经滥用了水平一词。

您从这里的一些答案中看到,有些人正在以一种形式使用这两个类!其他人则认为,当他们实际上需要form-inline时,他们需要水平的形式

我建议完全按照Bootstrap文档中的描述进行操作:

<form class="form-inline">
  <div class="form-group">
    <label for="nameId">Name</label>
    <input type="text" class="form-control" id="nameId" placeholder="Jane Doe">
  </div>
</form>

产生:

在此处输入图片说明


7
复制并粘贴您的代码,我在Bootstrap 3.3.4的文本输入上方获得名称标签。
Mike Covington

2

您可以在标签内使用span标签

  <div class="form-group">
    <label for="rg-from">
      <span>Ab:</span> 
      <input type="text" id="rg-from" name="rg-from" value="" class="form-control">
    </label>
  </div>

1

我设法解决了我的问题。似乎工作正常,这意味着我不必手动为所有输入添加宽度。

.form-inline .form-group input {
 width: auto; 
}

这不是您应该使用引导程序的方式。我建议您使用根据需要构建的类,而不要修改现有的类。
gvgramazio

是的,我同意,当我是整个Bootstrap场景的新手时,我写了这篇文章。
Tom C

1

我相信您已经找到了答案...这是我得出的解决方案。

那是我的CSS。

.field, .actions {
    margin-bottom: 15px;
  }
  .field label {
    float: left;
    width: 30%;
    text-align: right;
    padding-right: 10px;
    margin: 5px 0px 5px 0px;
  }
  .field input {
    width: 70%;
    margin: 0px;
  }

还有我的HTML ...

<h1>New customer</h1>
<div class="container form-center">
    <form accept-charset="UTF-8" action="/customers" class="new_customer" id="new_customer" method="post">
    <div style="margin:0;padding:0;display:inline"></div>

  <div class="field">
    <label for="customer_first_name">First name</label>
    <input class="form-control" id="customer_first_name" name="customer[first_name]" type="text" />
  </div>
  <div class="field">
    <label for="customer_last_name">Last name</label>
    <input class="form-control" id="customer_last_name" name="customer[last_name]" type="text" />
  </div>
  <div class="field">
    <label for="customer_addr1">Addr1</label>
    <input class="form-control" id="customer_addr1" name="customer[addr1]" type="text" />
  </div>
  <div class="field">
    <label for="customer_addr2">Addr2</label>
    <input class="form-control" id="customer_addr2" name="customer[addr2]" type="text" />
  </div>
  <div class="field">
    <label for="customer_city">City</label>
    <input class="form-control" id="customer_city" name="customer[city]" type="text" />
  </div>
  <div class="field">
    <label for="customer_pincode">Pincode</label>
    <input class="form-control" id="customer_pincode" name="customer[pincode]" type="text" />
  </div>
  <div class="field">
    <label for="customer_homephone">Homephone</label>
    <input class="form-control" id="customer_homephone" name="customer[homephone]" type="text" />
  </div>
  <div class="field">
    <label for="customer_mobile">Mobile</label>
    <input class="form-control" id="customer_mobile" name="customer[mobile]" type="text" />
  </div>
  <div class="actions">
    <input class="btn btn-primary btn-large btn-block" name="commit" type="submit" value="Create Customer" />
  </div>
</form>
</div>

您可以在这里看到工作示例... http://jsfiddle.net/s6Ujm/

PS:我也是初学者,专业设计师...随时分享您的评论。


1

我认为这是您想要的,来自引导文档“水平表单使用Bootstrap的预定义网格类,通过在表单中​​添加.form-horizo​​ntal来在水平布局中对齐标签和表单控件组。这样做会将.form-groups更改为表现为网格行,因此不需要.row”。所以:

<form class="form-horizontal" role="form">
<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>

小提琴:http : //jsfiddle.net/beewayne/B9jj2/29/


6
您的小提琴404d
Mike Covington

0
<div class="control-group">
   <label class="control-label" for="firstname">First Name</label>
   <div class="controls">
    <input type="text" id="firstname" name="firstname"/>
   </div>
</div>

我们也可以使用它

<label>First name:
    <input type="text" id="firstname" name="firstname"/>
</label>

2
Boostrap V3中不存在class =“ control-group”
Stefan Vogt


0

无需CSS。在您的页面上看起来应该不错。您可以col-md-*根据需要设置

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
<div class="row">
                            <div class="col-md-12">
                                <form class="form-inline" role="form">
                                    <div class="col">
                                        <div class="form-group">
                                            <label for="inputEmail" class="col-sm-3">Email</label>
                                            <input type="email" class="form-control col-sm-7" id="inputEmail" placeholder="Email">
                                        </div>
                                    </div>
                                    <div class="col">
                                        <div class="form-group">
                                            <label for="inputPassword" class="col-sm-3">Email</label>
                                            <input type="password" class="form-control col-sm-7" id="inputPassword" placeholder="Email">
                                        </div>
                                    </div>
                                    
                                    <button class="btn btn-primary">Button 1</button>
                                    &nbsp;&nbsp;
                                    <button class="btn btn-primary">Button 2</button>
                                </form>
                            </div>
                        </div>

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.