web-dev-qa-db-fra.com

Comment aligner verticalement étiquette et entrée dans Bootstrap 3?

Comment aligner verticalement l'étiquette et l'entrée dans Bootstrap 3? Je voudrais à la fois l'étiquette et l'entrée sur la même ligne. J'ai joué avec différentes classes et CSS personnalisées, mais rien ne semble fonctionner.

Le JSfiddle

<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>
39
fat fantasma

Le problème est que votre <label> est à l'intérieur d'un <h2> et les balises d’en-tête ont un margin défini par la feuille de style par défaut.

11
Blowsie

Le bootstrap 3 docs pour les formulaires horizontaux vous permet d’utiliser le .form-horizontal classe pour aligner verticalement vos étiquettes de formulaire et vos entrées. La structure de ces formulaires est la suivante:

<form class="form-horizontal" role="form">
  <div class="form-group">
    <label for="input1" class="col-lg-2 control-label">Label1</label>
    <div class="col-lg-10">
      <input type="text" class="form-control" id="input1" placeholder="Input1">
    </div>
  </div>
  <div class="form-group">
    <label for="input2" class="col-lg-2 control-label">Label2</label>
    <div class="col-lg-10">
      <input type="password" class="form-control" id="input2" placeholder="Input2">
    </div>
  </div>
</form>

Par conséquent, votre formulaire devrait ressembler à ceci:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <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 id="class_type" class="form-control input-lg" autocomplete="off">
                <option>Economy</option>
                <option>Premium Economy</option>
                <option>Club World</option>
                <option>First Class</option>
            </select>
        </div>
    </div>
</form>
44
djiango

Je suis sûr que vous avez déjà trouvé votre réponse, mais pour ceux qui cherchent encore une réponse:

Lorsque input-lg est utilisé, les marges ne correspondent pas sauf si vous utilisez form-group-lg en plus de form-group class. Son exemple est dans la documentation:

<form class="form-horizontal">
  <div class="form-group form-group-lg">
    <label class="col-sm-2 control-label" for="formGroupInputLarge">Large label</label>
    <div class="col-sm-10">
      <input class="form-control" type="text" id="formGroupInputLarge" placeholder="Large input">
    </div>
  </div>
  <div class="form-group form-group-sm">
    <label class="col-sm-2 control-label" for="formGroupInputSmall">Small label</label>
    <div class="col-sm-10">
      <input class="form-control" type="text" id="formGroupInputSmall" placeholder="Small input">
    </div>
  </div>
</form>
26
Bogac

Aucune de ces solutions n'a fonctionné pour moi. Mais j'ai pu obtenir un centrage vertical en utilisant <div class="form-row align-items-center"> _ pour chaque ligne du formulaire, selon le exemples Bootstrap .

6
MidnightJava