Comment créer un bouton dans Bootstrap 3 annuler automatiquement la pression après avoir cliqué?
Pour reproduire mon problème, créez une page avec quelques boutons, attribuez-leur les bootstrap appropriées (et l'inclusion bootstrap)):
<input id="one" type="button" class="btn btn-default" value="one">
<input id="two" type="button" class="btn btn-primary" value="two">
Chargez la page et cliquez sur l'un des boutons. Il devient déprimé et mis en surbrillance jusqu'à ce que vous cliquiez ailleurs sur la page (à l'aide de FF29 et de chrome35beta).
L'inspection de l'élément d'entrée cliqué et non cliqué ne montre aucune classe supplémentaire attachée et supprimée de celui-ci.
Voici un exemple de Bootstrap restant déprimés: http://jsfiddle.net/52VtD/5166/
Dans votre exemple, les boutons ne restent pas enfoncés. Ils restent concentrés . Si vous voulez voir la différence, procédez comme suit:
Si vous ne voulez pas que vos boutons restent concentrés après avoir été relâchés, vous pouvez demander au navigateur de ne pas les activer chaque fois que vous relâchez la souris.
Cet exemple utilise jQuery mais vous pouvez obtenir le même effet avec Vanilla JavaScript.
$(".btn").mouseup(function(){
$(this).blur();
})
Ou vous pouvez simplement utiliser une balise d'ancrage qui peut être stylée exactement de la même manière, mais comme ce n'est pas un élément de formulaire, il ne conserve pas le focus:
<a href="#" role="button" class="btn btn-default">one</a>.
Voir la section des éléments d'ancrage ici: http://getbootstrap.com/css/#buttons
Le bouton reste concentré. Pour supprimer cela efficacement, vous pouvez ajouter ce code de requête à votre projet.
$(document).ready(function () {
$(".btn").click(function(event) {
// Removes focus of the button.
$(this).blur();
});
});
Cela fonctionne aussi pour les liens d'ancrage
$(document).ready(function () {
$(".navbar-nav li a").click(function(event) {
// Removes focus of the anchor link.
$(this).blur();
});
});
Ou angular façon angulaire:
function blurElemDirective() {
return {
restrict: 'E',
link: function (scope, element, attrs) {
element.bind('click', function () {
element.blur();
});
}
};
}
app.directive('button', blurElemDirective);
app.directive('_MORE_ELEMENT_', blurElemDirective);
Remplacez _ MORE_ELEMENT _ par vos autres éléments.
Ou attribut façon:
function blurElemDirective() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind('click', function () {
element.blur();
});
}
};
}
app.directive('blurMe', blurElemDirective);
Ajoutez ensuite l'attribut à votre élément html: blur-me
<button blur-me></button>
Ma préférence:
<button onmousedown="event.preventDefault()" class="btn">Calculate</button>
C'est le focus du navigateur puisqu'il s'agit d'un élément de formulaire (input
). Vous pouvez facilement supprimer la mise au point avec un peu de css
input:focus {
outline: 0;
}
Voici le violon avec votre exemple: http://jsfiddle.net/52VtD/5167/
[~ # ~] éditer [~ # ~]
Ah, je viens de voir maintenant que la couleur du bouton change elle aussi. Bootstrap modifie le bouton de votre btn-default
bouton avec ce css:
.btn-default:focus {
color: #333;
background-color: #ebebeb;
border-color: #adadad;
}
Si vous ne voulez pas ce comportement, écrasez-le avec votre css.
Cela a à voir avec le :active
et :focus
états d'élément. Vous devez modifier les styles pour ces états pour ces boutons. Par exemple, pour le bouton par défaut:
.btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
color: #333;
background-color: #ccc;
border-color: #fff;
}