Bootstrap 3: Comment la forme de groupes destinés à être utilisés à l'intérieur des colonnes?

Je suis en utilisant Bootstrap 3, et j'ai un assez standard de mise en page: une large colonne de gauche (.col-md-8), contenant du texte brut, et une plus étroite de la colonne sur la droite (.col-md-4), contenant un formulaire.

Chacun des champs de formulaire, à son tour, est enveloppé dans un .form-group.

Dans ma première tentative, le .form-groups versaient sur les bords gauche et droit de la colonne contenant. (Assurez-vous que le JSFiddle aperçu d'image est au moins aussi large que le Bootstrap de sm le point d'arrêt.) J'ai ajouté un fond rose div pour afficher la boîte que le .form-groups devrait être rester à l'intérieur.

Dans ma deuxième tentative, j'ai ajouté un .container à l'intérieur de la .col-md-4, puis enveloppé chaque .form-group à l'intérieur d'un .row et un .col-md-4.

Cela fait l'affaire, mais...est-ce le bon et de manière préférée? Il semble que beaucoup d'extra, standard de balisage pour accomplir quelque chose qui devrait juste un phénomène naturel.

Le Bootstrap docs sont très bonnes, mais elles dissimulent une partie de la "grande image" des trucs comme ça. Peut-être que ce genre de choses est évident pour les gens qui connaissent déjà le responsive CSS, mais il peut être assez déroutant pour un débutant comme moi.

Voici le code de ma première tentative:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <script type='text/javascript' src='//code.jquery.com/jquery-2.1.0.js'></script>
  <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
  <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="/css/result-light.css">
</script>
<head>
<body>
  <div class="container">

    <h1>Broken version</h1>
    <h2>Don't forget to expand the width of this preview window. Otherwise you'll just see Boostrap's xs (vertically stacked) layout.</h2>

    <div class="row">

        <div class="col-md-8">

            <div style="background-color: orange;">
                <p>This column will be filled with text. Lorem ipsum dolor sit amet...</p>
            </div>

        </div> <!-- .col-md-8 -->

        <div class="col-md-4">

            <div style="background-color: pink;">

                <form role="form" class="form-horizontal">

                    <div class="form-group">
                        <label class="control-label" for="name">Name</label>
                        <input class="form-control" type="text" name="name" id="name">                    
                    </div>

                    <div class="form-group">
                        <label class="control-label" for="email">Email</label>
                        <input class="form-control" type="email" name="email" id="email">                    
                    </div>

                    <button type="submit">Submit</button>

                </form>

            </div> <!-- pink background div -->

        </div> <!-- .col-md-4 -->

    </div> <!-- .row -->

</div> <!-- .container -->

</body>

</html>

Et voici le code de mon deuxième, corrigé éventuellement tentative:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>

  <script type='text/javascript' src='//code.jquery.com/jquery-2.1.0.js'></script>
  <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
  <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="/css/result-light.css">
</head>
<body>
  <div class="container">

    <h1>Corrected (?) version</h1>
    <h2>Don't forget to expand the width of this preview window. Otherwise you'll just see Boostrap's xs (vertically stacked) layout.</h2>

    <div class="row">

        <div class="col-md-8">

            <div style="background-color: orange;">
                <p>This column will be filled with text. Lorem ipsum dolor sit amet...</p>
            </div>

        </div> <!-- .col-md-8 -->

        <div class="col-md-4">

            <div style="background-color: pink;">

                <div class="container">

                    <form role="form" class="form-horizontal">

                        <div class="row">
                            <div class="form-group col-md-4">
                                <label class="control-label" for="name">Name</label>
                                <input class="form-control" type="text" name="name" id="name">                    
                            </div>
                        </div>

                        <div class="row">
                            <div class="form-group col-md-4">
                                <label class="control-label" for="email">Email</label>
                                <input class="form-control" type="email" name="email" id="email">                    
                            </div>
                        </div>

                        <button type="submit">Submit</button>

                    </form>

                </div> <!-- .container -->

            </div> <!-- .pink background div -->

        </div> <!-- .col-md-4 -->

    </div> <!-- .row -->

</div> <!-- .container -->

</body>

</html>
Vous n'êtes pas obligé d'utiliser .forme horizontale, donc n'est pas parce que ce n'est pas un .forme horizontale de la situation. Regarder les docs .form-horizontal exemples, ce n'est pas là où vous l'utilisation de cette classe. Utilisez pas de classe de votre forme et de voir que vous n'avez pas besoin .récipient pour mettre à zéro la marge négative sur l' .formulaire-groupe
Vous pouvez utiliser .formulaire-groupe au lieu de .ligne si vous voulez un peu de marge inférieure.

OriginalL'auteur greenie2600 | 2014-10-10