bootstrap: aligner l'entrée avec le bouton

Pourquoi les boutons et les entrées ne s'alignent-ils pas bien dans bootstrap? J'ai essayé quelque chose de simple comme:

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

Le bouton est environ 5px inférieur à l'entrée dans chrome / firefox.entrez la description de l'image ici

251
demandé sur pguardiario 2012-05-16 13:39:03

10 réponses

Twitter Bootstrap 3

Comme indiqué dans la réponse de @ abimelex, les entrées et les boutons peuvent être alignés en utilisant les classes .input-group (Voir http://getbootstrap.com/components/#input-groups-buttons):

Bouton de groupe sur le côté gauche

<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>

Bouton de groupe sur le côté droit

<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>

Cette solution a été ajoutée pour garder ma réponse à jour, mais veuillez coller votre vote sur la réponse fournie par @ abimelex.


Twitter Bootstrap 2

Bootstrap propose une classe .input-append, qui fonctionne comme un élément wrapper et corrige ceci pour vous:

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

Comme l'a souligné @OleksiyKhilkevich dans sa réponse, il existe une deuxième façon d'aligner input et button en utilisant la classe .form-horizontal:

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

Les Différences

La différence entre ces deux classes est que {[5] } placera le button contre l'élément input (donc ils semblent attachés), où .form-horizontal placera un espace entre ils.

-- Note --

pour permettre aux éléments input et button d'être côte à côte sans espacement, le {[15] } a été défini sur 0 dans la classe .input-append (cela supprime l'espacement blanc entre les éléments inline-block). Cela peut avoir un effet négatif sur les tailles de police dans l'élément input Si vous souhaitez remplacer les valeurs par défaut à l'aide des mesures em ou %.

479
répondu My Head Hurts 2017-05-23 12:10:45

Vous pouvez utiliser la propriétéinput-group button pour appliquer le bouton directement au champ de saisie.

Bootstrap 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 -->

Jetez un oeil à BS4 input-Group doc pour de nombreux autres exemples.

exemple pour le bouton de groupe d'entrée bs3

162
répondu Karl Adler 2018-04-03 21:17:06

Juste en tête, il semble y avoir une classe CSS spéciale pour cela appelée form-horizontal

Input-append a un autre effet secondaire, qu'il baisse la taille de la police à zéro

37
répondu Oleksiy Khilkevich 2012-12-06 23:10:47

Utilisez .form-inline = cela alignera à gauche les étiquettes et les contrôles de bloc en ligne pour une mise en page compacte

Exemple: http://jsfiddle.net/hSuy4/292/

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

.form-horizontal = droite alignez les étiquettes et faites-les flotter vers la gauche pour les faire apparaître sur la même ligne que les contrôles, Ce Qui est mieux pour la mise en page de formulaire à 2 colonnes.

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

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

27
répondu ZEESHAN ARSHAD 2013-07-15 20:04:00

J'ai surtout essayé et j'ai fini avec quelques changements que je voudrais partager. Voici le code qui fonctionne pour moi (trouvez la capture d'écran ci-jointe):

<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>

entrez la description de l'image ici

Si vous voulez le voir fonctionner, utilisez simplement le code ci-dessous dans votre éditeur:

<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>

J'espère que cela aide.

12
répondu Abhimanyu 2016-01-29 05:03:37

J'étais aussi aux prises avec le même problème. Les classes bootstrap que j'utilise ne fonctionnent pas pour moi. Je suis venu avec une solution de contournement, comme ci-dessous:

<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>

Fondamentalement, j'ai dépassé la propriété d'affichage de la classe "form-control", et utilisé d'autres propriétés de style pour corriger la taille et la position.

Voici le résultat:

entrez la description de l'image ici

5
répondu Bikash Bishwokarma 2018-01-28 04:23:09
<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
répondu Ashu Designer 2016-02-10 11:58:48

J'ai essayé tous les codes ci-dessus et aucun d'entre eux n'a résolu mes problèmes. Voici ce qui a fonctionné pour moi. J'ai utilisé d'entrée-groupe-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
répondu kupaff 2016-06-09 13:15:34

Pas directement lié, sauf si vous avez un code similaire mais je viens de remarquer un comportement étrange à form-inline, bootstrap 3.3.7

Je n'ai pas utilisé de ligne et de cellules pour cela car il s'agit d'un projet de bureau, si la balise d'ouverture était sous la table (dans ce cas):

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

Les éléments de formulaire seraient empilés.

Commutateur et il correctement aligné.

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

Safari 10.0.2 et le dernier Chrome N'ont fait aucune différence. Peut-être que ma mise en page était fausse, mais ce n'est pas très indulgent.

1
répondu Trond 2017-02-01 13:24:09
style="padding-top: 8px"

Utilisez ceci pour déplacer votre div vers le haut ou vers le bas dans votre ligne. Fonctionne des merveilles pour moi.

-1
répondu Zach J. 2014-09-18 19:35:30