引导程序:使输入与按钮对齐


299

为什么按钮和输入在Bootstrap中对齐不正确?

我尝试了一些简单的方法:

<input type="text"/><button class="btn">button</button>

该按钮大约5px低于chrome / firefox中的输入。

在此处输入图片说明

Answers:


551

Twitter Bootstrap 4

在Twitter Bootstrap 4中,可以使用input-group-prependinput-group-append类将输入和按钮对齐(请参阅https://getbootstrap.com/docs/4.0/components/input-group/#button-addons

左侧的组按钮(前置)

<div class="input-group mb-3">
  <div class="input-group-prepend">
    <button class="btn btn-outline-secondary" type="button">Button</button>
  </div>
  <input type="text" class="form-control">
</div>

右侧的组按钮(附加)

<div class="input-group mb-3">
  <div class="input-group-append">
    <button class="btn btn-outline-secondary" type="button">Button</button>
  </div>
  <input type="text" class="form-control">
</div>

Twitter Bootstrap 3

如@abimelex的答案所示,可以使用.input-group类来对齐输入和按钮(请参阅http://getbootstrap.com/components/#input-groups-buttons

左侧的组按钮

<div class="input-group">
  <span class="input-group-btn">
    <button class="btn btn-default" type="button">Go!</button>
  </span>
  <input type="text" class="form-control">
</div>

右侧的组按钮

<div class="input-group">
   <input type="text" class="form-control">
   <span class="input-group-btn">
        <button class="btn btn-default" type="button">Go!</button>
   </span>
</div>

已添加此解决方案以使我的答案保持最新,但是请对@abimelex提供的答案进行投票


Twitter Bootstrap 2

Bootstrap提供了一个.input-append类,该类可用作包装器元素并为您更正此错误:

<div class="input-append">
    <input name="search" id="search"/>
    <button class="btn">button</button>
</div>

正如@OleksiyKhilkevich在其答案中指出的那样,还有第二种对齐方式inputbutton使用.form-horizontal类的方法:

<div class="form-horizontal">
    <input name="search" id="search"/>
    <button class="btn">button</button>
</div>

差异

这两个类之间的区别是.input-append将元素放置在button上方input(因此它们看起来像是已连接),在元素.form-horizontal之间将放置空格。

- 注意 -

为使inputbutton元素彼此相邻而没有间距,在类font-size中将设置为(这消除了元素之间的白色间距)。如果要使用或尺寸覆盖默认值,这可能会对元素中的字体大小产生不利影响。0.input-appendinline-blockinputem%


5
感谢您的回答,但我觉得这里出了点问题。当然,我不是第一个希望引导程序组件与表单元素对齐的人。
pguardiario

@pguardiario-您完全正确。这似乎是错误的,拍了我的脑后,我想起了.input-append上课。
我的头部受伤

1
您需要包装器类来执行此操作似乎很奇怪。他们不应该默认排队吗?
opsb 2012年

2
@opsb如果它们占用相同数量的垂直空间,则可以。但是,twitter引导程序中的输入字段具有a,margin-bottom: 9px但按钮没有,因此它们不会占用相同的垂直空间。由于两个元素都具有middle垂直对齐,因此按钮会由于该差异而偏移。使用.input-append包装器将删除此边距底值。
我的头部受伤

是的,我想如果默认情况下它们具有相同的垂直高度,它将破坏其他表单布局。
opsb 2012年

187

您可以使用input-group button属性将按钮直接应用于输入字段。

引导程序3和4

<div class="input-group">
  <input type="text" class="form-control">
  <span class="input-group-btn">
    <button class="btn btn-default" type="button">Go!</button>
  </span>
</div><!-- /input-group -->

看看BS4 Input-Group doc了解更多示例。

bs3输入组按钮示例


3
其他人没有为我工作,但是这只是我想要的方式。谢谢。
Colandus 2014年

1
对我来说,如果创建一个额外的span标签来分配该类是行不通的,但是如果我将该类添加到div标签中就行了:<div class="form-group input-group-btn">
J0ANMM 2016年

对于BS4,此答案已过时,请看一下我的答案。
亚历山大·金


30

使用.form-inline =这将使标签和行内块控件向左对齐,以实现紧凑的布局

示例:http : //jsfiddle.net/hSuy4/292/

<div class="form-inline">
<input type="text">
<input type="button" class="btn" value="submit">
</div>

.form-horizo​​ntal =将标签右对齐并将其浮动到左侧,以使它们与控件显示在同一行上,这对于2列表单布局更佳。

(e.g. 
Label 1: [textbox]
Label 2: [textbox]
     : [button]
)

范例:http//twitter.github.io/bootstrap/base-css.html#forms


2
我可以确认form-inline适用于Bootstrap3。谢谢。
奥斯丁2014年

太棒了!正是我需要的麻烦表格!
its_notjack

似乎.form-inline仅在至少768px宽的视口中有效:w3schools.com/bootstrap/bootstrap_forms.asp
anemaria20

16

我首先尝试了一下,但最后我想分享一些变更。这是对我有用的代码(找到随附的屏幕截图):

<div class="input-group">
    <input type="text" class="form-control" placeholder="Search text">
    <span class="input-group-btn" style="width:0;">
        <button class="btn btn-default" type="button">Go!</button>
    </span>
</div>

在此处输入图片说明

如果您希望它正常工作,请在编辑器中使用以下代码:

<html>
    <head>
        <link type='text/css' rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css' />
    </head>
    <body>
        <div class="container body-content">
            <div class="form-horizontal">
              <div class="input-group">
                  <input type="text" class="form-control" placeholder="Search text">
                  <span class="input-group-btn" style="width:0;">
                      <button class="btn btn-default" type="button">Go!</button>
                  </span>
              </div>
            </div>
        </div>
    </body>
</html>

希望这可以帮助。


这是哪个Bootstrap版本?并导致不使用哪个问题style="width:0;"
卡尔·阿德勒

如果您不使用width:0,则它将占用页面的整个宽度。
Abhimanyu

引导方式将用像<div class="col-md-4">不需要这样的元素包装width: 0
Karl Adler

我设置是因为我不希望输入控件占据屏幕的整个宽度
Abhimanyu

6

我也在同一个问题上挣扎。我使用的引导程序类不适用于我。我想出了一种解决方法,如下所示:

<form action='...' method='POST' class='form-group'>
  <div class="form-horizontal">
    <input type="text" name="..." 
        class="form-control" 
        placeholder="Search People..."
        style="width:280px;max-width:280px;display:inline-block"/>

    <button type="submit" 
        class="btn btn-primary" 
        style="margin-left:-8px;margin-top:-2px;min-height:36px;">
      <i class="glyphicon glyphicon-search"></i>
     </button>
  </div>
</form>

基本上,我覆盖了“ form-control”类的display属性,并使用了其他样式属性来校正大小和位置。

结果如下:

在此处输入图片说明



4
<form class="form-inline">
  <div class="form-group">
    <label class="sr-only" for="exampleInputEmail3">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail3" placeholder="Email">
  </div>
  <button type="submit" class="btn btn-default">Sign in</button>
</form>

3

我尝试了上述所有代码,但都没有解决我的问题。这对我有用。我使用了input-group-addon。

<div class = "input-group">
  <span class = "input-group-addon">Go</span>
  <input type = "text" class = "form-control" placeholder="you are the man!">
</div>

1

除非您有类似的代码,否则不直接相关,除非我只是注意到表单内联引导程序3.3.7有一种奇怪的行为

我没有为此使用行和单元格,因为它是一个桌面项目,如果开始标记在表格下方(在这种情况下):

<table class="form-inline"> 
<form> 
<tr>

表单元素将堆叠。

开关,并正确对齐。

<form>
<table class="form-inline">
<tr>

Safari 10.0.2和最新的Chrome没什么区别。也许我的布局错了,但不是很宽容。


1

以输入浮点数为左。然后按一下按钮并将其向右浮动。距离不止一个时,您可以清除类。

<input style="width:65%;float:left"class="btn btn-primary" type="text" name="name"> 
<div style="width:8%;float:left">&nbsp;</div>
<button class="btn btn-default" type="button">Go!</button>
<div class="clearfix" style="margin-bottom:10px"> </div>

-1
style="padding-top: 8px"

使用它可以在您的行中向上或向下移动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.