J'ai un autre problème lié à Bootstrap ... Je veux ajouter une radio et des cases à cocher à mon formulaire, je voudrais aussi qu'ils prennent 100% de la largeur de l'élément de formulaire.
J'ai ajouté un groupe de boutons comme ceci:
<div class="form-group">
<label class="col-sm-3 control-label">Subscribe</label>
<div class="col-sm-9">
<div class="btn-group input-group" data-toggle="buttons">
<label class="btn btn-success">
<input type="radio" name="options" id="option1" />Yes</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option2" />Maybe</label>
<label class="btn btn-danger">
<input type="radio" name="options" id="option3" />No</label>
</div>
</div>
</div>
Cela me donne de jolis boutons de type radio:
Mais comme vous pouvez le constater, leur largeur est fixe. Cela peut-il être corrigé avec les classes bootstrap? Encore une fois, voici mon exemple de code: http://jsfiddle.net/Misiu/yy5HZ/5/
Utilisez la classe .btn-group-justified
intégrée: Documents officiels
Faire un groupe de boutons étirer à des tailles égales pour couvrir la totalité largeur de son parent. Fonctionne également avec les menus déroulants dans le groupe de boutons.
Ancres:
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<a href="#" class="btn btn-default" role="button">Left</a>
<a href="#" class="btn btn-default" role="button">Middle</a>
<a href="#" class="btn btn-default" role="button">Right</a>
</div>
Boutons:
Pour utiliser des groupes de boutons justifiés avec des éléments
<button>
, vous devez envelopperchaque bouton d'un groupe de boutons. La plupart des navigateurs n'appliquent pas correctement notre CSS pour la justification des éléments<button>
, mais depuis nous prenons en charge boutons déroulants, nous pouvons contourner ce problème.
<div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
<div class="btn-group" role="group">
<button type="button" class="btn btn-default">Left</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-default">Middle</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-default">Right</button>
</div>
</div>
Vous pouvez simplement utiliser les classes bootstrap col-n, donc si vous avez 2 boutons, utilisez col-xs-6
dessus. Le problème est quand vous avez 5 boutons par exemple. Il n'y a pas de classe pour cela dans le système de grille bootstrap. Donc, je voudrais utiliser l'un des éléments suivants:
Pour différencier les groupes avec un nombre différent de boutons, utilisez des classes personnalisées supplémentaires:
CSS
.btn-group {
width: 100%;
}
.btn-group-2 label.btn {
width: 50%;
}
.btn-group-3 label.btn {
width: 33.3%;
}
HTML
<div class="btn-group btn-group-3 input-group" data-toggle="buttons">
<label class="btn btn-success">
<input type="radio" name="options" id="option1" />Yes</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option2" />Maybe</label>
<label class="btn btn-danger">
<input type="radio" name="options" id="option3" />No</label>
</div>
Si vous voulez éviter ces classes CSS, vous ne pouvez utiliser que jQuery:
$('.btn-group').each(function(index, item) {
$(item).find('.btn').css(
'width', 100 / $(item).find('.btn').length + '%'
)
});
Une autre solution:
.btn-group {
display: flex;
flex-direction: row;
}
.btn-group > button {
width: 100%;
}
Vous pouvez simplement ajouter votre propre classe et leur donner une largeur de 33% (pour les 3 boutons) ou de 50% (pour les 2 boutons).
Pour le bootstrap 4, les docs disent que vous pouvez le faire:
.btn-group-justified
supprimé. En remplacement, vous pouvez utiliser <div class="btn-group d-flex" role="group"></div>
pour envelopper des éléments avec .w-100
.
Si la solution de @ Schmalzy ne fonctionne pas, vous utilisez peut-être Bootstrap v3.0.0, pour lequel ajoutez les styles suivants en plus du balisage HTML dans la solution de @ Schmalzy.
.btn-group-justified > .btn-group .btn {
width: 100%;
}
.btn-group-justified > .btn, .btn-group-justified > .btn-group {
display: table-cell;
float: none;
width: 1%;
}