223 votes

Boutons à largeur fixe avec Bootstrap

Bootstrap prend-il en charge les boutons à largeur fixe ? Actuellement, si j'ai deux boutons, "Enregistrer" et "Télécharger", la taille du bouton change en fonction du contenu.

Quelle est la bonne façon d'étendre Bootstrap ?

0 votes

Par largeur fixe, voulez-vous dire qu'il ne s'agrandit pas avec le contenu qu'il contient ? Les boutons ne sont limités que par le texte qu'ils contiennent.

0 votes

@AndresIlich Actuellement, si j'ai 2 boutons "Enregistrer" et "Télécharger", la taille du bouton change en fonction du contenu.

0 votes

Vous voulez donc que ces deux boutons aient la même largeur, n'est-ce pas ?

362voto

Kami Points 9721

Vous pouvez également utiliser le .btn-block sur le bouton, afin qu'il s'étende à la largeur du parent.

Si le parent est un élément à largeur fixe, le bouton s'étendra sur toute la largeur. Vous pouvez appliquer des balises existantes au conteneur pour vous assurer que les boutons fixes/fluides n'occupent que l'espace requis.

<div class="span2">
    <p><button class="btn btn-primary btn-block">Save</button></p>
    <p><button class="btn btn-success btn-block">Download</button></p>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<div class="span2">
  <p><button class="btn btn-primary btn-block">Save</button></p>
  <p><button class="btn btn-success btn-block">Download</button></p>
</div>

84voto

Andres Ilich Points 41712

Pour ce faire, vous pouvez définir une largeur qui vous semble correcte pour les deux boutons, puis créer une classe personnalisée avec cette largeur et l'ajouter à vos boutons comme suit :

CSS

.custom {
    width: 78px !important;
}

Je peux ensuite utiliser cette classe et l'ajouter aux boutons comme suit :

<p><button href="#" class="btn btn-primary custom">Save</button></p>
<p><button href="#" class="btn btn-success custom">Download</button></p>

Démonstration : http://jsfiddle.net/yNsxU/

Vous pouvez prendre cette classe personnalisée que vous créez et la placer dans votre propre feuille de style, que vous chargez après la feuille de style du bootstrap. En effet, les modifications apportées à la feuille de style bootstrap risquent d'être accidentellement perdues lors de la mise à jour du framework. Nous souhaitons également que vos modifications aient la priorité sur les valeurs par défaut.

4 votes

Utiliser em au lieu de pixels, ils vous aident à définir la largeur en fonction de la longueur des caractères.

2 votes

@DanDascalescu ~2 ans plus tard, je ne suis pas d'accord. L'auteur n'a pas forcément envie de faire en sorte que les boutons s'étendent pour remplir tout le parent, ça pourrait être la moitié de la page pour un bouton qui dit "enregistrer". Je recommanderais quelque chose comme ça, mais avec des requêtes média si nécessaire. Il y a toujours le javascript pour les rendre aussi grands que le plus grand bouton, mais c'est une voie que j'évite généralement.

44voto

kravits88 Points 1307

Si vous placez vos boutons à l'intérieur d'un div avec la classe "btn-group", les boutons à l'intérieur s'étireront à la même taille que le plus grand bouton.

eg :

<div class="btn-group">
  <button type="button" class="btn btn-default">Left</button>
  <button type="button" class="btn btn-default">Middle</button>
  <button type="button" class="btn btn-default">Right</button>
</div> 

Groupes de boutons Bootstrap

0 votes

@tonjo : pouvez-vous expliquer pourquoi cela ne fonctionne pas ? J'ai découvert qu'en fait, cela fonctionne - voir le fichier variation verticale par exemple.

2 votes

J'essaie d'obtenir la même fonctionnalité, et le code ci-dessus ne fonctionne pas non plus pour moi. @DanDascalescu avez-vous trouvé un autre moyen ?

2 votes

Les boutons doivent également être de la classe btn-block pour que cela fonctionne, du moins pour moi.

15voto

Marc B. Points 369

Pour vos boutons, vous pouvez créer un autre sélecteur CSS pour ces classes spéciales de boutons avec une largeur minimale et maximale spécifiée. Ainsi, si votre bouton est

<button class="save_button">Save</button>

Dans votre fichier CSS Bootstrap, vous pouvez créer quelque chose comme

.save_button {
    min-width: 80px;
    max-width: 80px;
}

De cette façon, il devrait toujours rester à 80px, même si vous avez un design réactif.

En ce qui concerne la bonne façon d'étendre Bootstrap, jetez un coup d'œil à ce fil de discussion :

Extension de Bootstrap

11voto

Prakash G. R. Points 3193

Avec BS 4, vous pouvez également utiliser le Dimensionnement et appliquez w-100 pour que le bouton puisse occuper toute la largeur du conteneur parent.

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>
  Using btn-block
</p>
<div class="container-fluid">
  <div class="btn-group col" role="group" aria-label="Basic example">
    <button type="button" class="btn btn-outline-secondary">Left</button>
    <button type="button" class="btn btn-outline-secondary btn-block">Middle</button>
    <button type="button" class="btn btn-outline-secondary">Right</button>
  </div>
</div>

<p>
  Using w-100
</p>
<div class="container-fluid">
  <div class="btn-group col" role="group" aria-label="Basic example">
    <button type="button" class="btn btn-outline-secondary">Left</button>
    <button type="button" class="btn btn-outline-secondary w-100">Middle</button>
    <button type="button" class="btn btn-outline-secondary">Right</button>
  </div>
</div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X