bouton bootstrap sur clic montrant la couleur par défaut

J'essaie de styliser la couleur du bouton avec le code ci-dessous, les couleurs fonctionnent jusqu'à ce que je clique sur le bouton, le bouton affiche les couleurs par défaut, Comment puis-je spécifier les couleurs du bouton onclick?

.btn-success { 
 color: #ffffff; 
 background-color: #161617; 
 border-color: #494F57; 
} 

.btn-success:hover, 
.btn-success:focus, 
.btn-success:active, 
.btn-success.active, 
.open .dropdown-toggle.btn-success { 
 color: #ffffff; 
 background-color: #1F2838; 
 border-color: #494F57; 
} 

.btn-success:active, 
.btn-success.active, 
.open .dropdown-toggle.btn-success { 
 background-image: none; 
} 

.btn-success.disabled, 
.btn-success[disabled], 
fieldset[disabled] .btn-success, 
.btn-success.disabled:hover, 
.btn-success[disabled]:hover, 
 fieldset[disabled] .btn-success:hover, 
.btn-success.disabled:focus, 
.btn-success[disabled]:focus, 
fieldset[disabled] .btn-success:focus, 
.btn-success.disabled:active, 
.btn-success[disabled]:active, 
fieldset[disabled] .btn-success:active, 
.btn-success.disabled.active, 
.btn-success[disabled].active, 
fieldset[disabled] .btn-success.active { 
background-color: #161617; 
border-color: #494F57; 
} 

.btn-success .badge { 
  color: #161617; 
 background-color: #ffffff; 
}
24
demandé sur user3312792 2015-07-13 11:58:11

6 réponses

Le sélecteur :active est ce dont vous avez besoin pour le clic.

.btn-sample:active {
  // click styles here
}

Il semble que vous avez cela ci-dessus, donc si vous voyez toujours une couleur légèrement différente, c'est probablement à cause de box-shadow qui est également appliqué à l'état du bouton active. Désactivez cela comme ceci:

.btn-sample:active {
  box-shadow: none;
}

Modifier: Le sélecteur qui remplace votre css est en fait btn-success:active:focus. Vous devrez donc ajouter ce qui suit à votre css:

.btn-success:active:focus {
  color: #ffffff; 
  background-color: #161617; 
  border-color: #494F57;
}

Suite à mon commentaire ci-dessous, vous feriez mieux de créer votre classe propre telle que btn-custom à laquelle vous pouvez appliquer les styles souhaités. En combinant cela avec la classe btn existante, vous pouvez obtenir le résultat souhaité avec beaucoup moins de code car vous n'aurez pas besoin de remplacer les sélecteurs existants.

53
répondu Guy 2015-07-13 10:01:54

Vous devez utiliser la déclaration !important pour le faire correctement.

.btn-success:hover, .btn-success:active, .btn-success:focus {
  color: #ffffff !important;
  background-color: #1F2838 !important;
  border-color: #494F57 !important;
}
14
répondu xxxbence 2016-03-01 20:39:11

Ajoutez simplement le code suivant dans votre CSS

.btn-success.active.focus, .btn-success.active:focus, .btn-success.active:hover, .btn-success:active.focus, .btn-success:active:focus, .btn-success:active:hover, .open>.dropdown-toggle.btn-success.focus, .open>.dropdown-toggle.btn-success:focus, .open>.dropdown-toggle.btn-success:hover
{
color: #fff;
background-color: #161617; 
border-color: #494F57; 
}
2
répondu Amanjot Kaur 2015-07-13 09:46:14

Un peu d'inspiration de la source bootstrap Pour remplacer ces différents états de boutons où $off-white et $brand-black sont définis par nous:

.btn-success {
  &:hover,
  &:focus,
  &.focus {
    color: $off-white;
    background-color: $brand-black;
  }

  &:active,
  &.active,
  &.disabled,
  &:disabled {
    color: $off-white;
    background-color: $brand-black;

    &:focus,
    &.focus {
      color: $off-white;
      background-color: $brand-black;
    }
  }
}
1
répondu Bill Brock 2016-09-21 14:45:25

Si vous travaillez sur un projet personnel, et non avec une équipe, il est à noter que vous pouvez remplacer les styles de pseudo-classe simplement en appliquant"!important " pour les mêmes déclarations de style sur la classe:

.btn-success { color: #ffffff !important; background-color: #161617 !important; border-color: #494F57 !important; }

Généralement, c'est une bonne idée de rester loin de !important car cela remplacera toutes les déclarations de style de couleur, de couleur d'arrière-plan et de couleur de bordure sur la classe btn-success (sauf si vous remplacez à nouveau les déclarations de style avec !important plus tard dans votre feuille de style bien que ce soit ridicule).

Si l'objectif est la plus petite taille de fichier possible et que vous utilisez cette classe partout de la même manière-ce qui signifie pas de styles en ligne - alors cela peut être votre meilleure option.

Alternativement, mais en utilisant la même pensée, vous pouvez essayer de nommer une nouvelle classe personnalisée quelque chose comme .btn-success-important, et ne l'appliquez qu'après btn-success où vous devez utiliser la substitution.

Il y a un hic cependant: Si vous combinez .btn-succès ou votre .btn-succès-important avec tout autre Bootstrap .btn-group, !important remplacera tout style de pseudo-classe déclaré dans. Dans ce cas, vous pouvez être mieux avec la réponse de Guy (la classe personnalisée sans !déclarations de style importantes).

0
répondu bagofcole 2016-07-15 17:35:17

Cette animation de pression de bouton de la couleur par défaut est due à l'image d'arrière-plan. Utilisez ceci pour chaque style nommé (btn-default, btn-success, etc):

.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
0
répondu Reuven Etzion 2017-05-22 20:14:47