Je veux créer un bouton bascule en html en utilisant css. Je le veux pour que lorsque vous cliquez dessus, il reste enfoncé et que lorsque vous cliquez dessus à nouveau, il ressort.
S'il n'y a aucun moyen de le faire simplement en utilisant css. Existe-t-il un moyen de le faire en utilisant jQuery?
Réponses:
La bonne manière sémantique serait d'utiliser une case à cocher, puis de la styliser de différentes manières si elle est cochée ou non. Mais il n'y a pas de bons moyens d'y parvenir. Vous devez ajouter une durée supplémentaire, une div supplémentaire et, pour un look vraiment sympa, ajouter du javascript.
La meilleure solution est donc d'utiliser une petite fonction jQuery et deux images d'arrière-plan pour styliser les deux statuts différents du bouton. Exemple avec un effet haut / bas donné par des bordures:
De toute évidence, vous pouvez ajouter des images d'arrière-plan qui représentent le bouton haut et bouton bas, et rendre la couleur d'arrière-plan transparente.
la source
L'interface utilisateur JQuery simplifie la création de boutons à bascule. Juste mettre ça
sur votre page puis dans votre corps
onLoad
ou votre$.ready()
(ou certains objets littérauxinit()
fonctionnent si vous construisez un site ajax ..) déposez un JQuery comme ceci:c'est tout. (n'oubliez pas le
< label for=...>
car JQueryUI l'utilise pour le corps du bouton bascule ..)À partir de là, vous travaillez simplement avec comme n'importe quel autre
input="checkbox
"parce que c'est toujours ce que le contrôle sous-jacent est, mais JQuery UI le fait simplement ressembler à un joli bouton à bascule à l'écran.la source
voici un exemple utilisant
pure css
:la source
En combinaison avec cette réponse, vous pouvez également utiliser ce type de style qui ressemble à un basculeur de paramètres mobiles.
HTML
CSS
jQuery
Pourrait être beaucoup plus joli, mais donne l'idée.
Un avantage est qu'il peut être animé avec jquery et / ou CSS3
Fiddler
la source
Si vous voulez un bouton approprié, vous aurez besoin de javascript. Quelque chose comme ça (nécessite un peu de travail sur le style mais vous comprenez l'essentiel). Je ne prendrais pas la peine d'utiliser jquery pour quelque chose d'aussi trivial pour être honnête.
la source
Vous pouvez simplement utiliser
toggleClass()
pour suivre l'état. Ensuite, vous vérifiez si l'élément bouton a la classe, comme ceci:Et j'utilise l'
button
élément pour les boutons pour des raisons sémantiques.la source
Vous pouvez utiliser un élément d'ancrage (
<a></a>
) et utiliser a: active et a: link pour changer l'image d'arrière-plan pour l'activer ou la désactiver. Juste une pensée.Edit: La méthode ci-dessus ne fonctionne pas très bien pour basculer. Mais vous n'avez pas besoin d'utiliser jquery. Écrivez une simple fonction javascript onClick pour l'élément, qui change l'image d'arrière-plan de manière appropriée pour donner l'impression que le bouton est enfoncé, et définissez un indicateur. Ensuite, au prochain clic, l'image et le drapeau sont inversés. Ainsi
Et le html comme ça
<div id="toggleDiv" onclick="toggle()">Some thing</div>
la source
Je ne pense pas que l'utilisation de JS pour créer un bouton soit une bonne pratique. Que faire si le navigateur de l'utilisateur désactive JavaScript?
De plus, vous pouvez simplement utiliser une case à cocher et un peu de CSS pour le faire. Et il est facile de récupérer l'état de votre case à cocher.
Ce n'est qu'un exemple, mais vous pouvez le styliser comme vous le souhaitez.
http://jsfiddle.net/4gjZX/
HTML
CSS
J'espère que cela t'aides
la source
Je serais enclin à utiliser une classe dans votre css qui modifie le style de la bordure ou la largeur de la bordure lorsque le bouton est enfoncé, ce qui donne l'apparence d'un bouton à bascule.
la source
Essayez ceci:
la source
Il existe un plugin jquery de Swizec , qui peut le faire entre autres: https://github.com/Swizec/styled-button
(L'ancien lien était http://swizec.com/code/styledButton/ , je n'ai pas complètement testé le remplacement, je l'ai juste trouvé avec Google.)
la source
Vous pouvez utiliser la pseudoclasse "active" (cela ne fonctionnera pas sur IE6, cependant, pour les éléments autres que les liens)
la source
Voici l'un des exemples / variantes (décrits plus en détail) de ToggleButton utilisant jQuery avec
<label for="input">
implémentation.Nous allons d'abord créer un conteneur pour notre ToggleButton en utilisant du HTML classique
<input>
et<label>
Ensuite, nous définirons la fonction pour basculer notre bouton. Notre bouton est en fait l'habituel
<label>
que nous allons styliser pour représenter le basculement de valeur.La fonction est implémentée de manière réutilisable. Vous pouvez l'utiliser pour plus d'un, deux ou même trois ToggleButtons que vous avez créés.
... et enfin ... pour que cela fonctionne comme prévu, nous devrions lier la fonction bascule à un événement (événement "change") de notre
<label>
bouton improvisé (ce sera unclick
événement car nous ne modifions pascheckbox
directement, donc aucunchange
événement peut être renvoyé pour<label>
).Avec CSS, nous pouvons définir
backgorund-image
ou certainsborder
pour représenter le changement de valeur tout<label>
en faisant le travail pour nous en modifiant la valeur d'une case à cocher;).J'espère que cela aide quelqu'un.
la source
.addClass()
/,.removeClass()
vous pouvez utiliser.toggleClass()
, mais la méthode décrite définit explicitement les actions pourchecked
/unchecked
values.Essayer;
Et assurez-vous que dans le
Souvenez-vous que lorsque vous codez ceci, seulement
somename
et que voussomeid
pouvez changer dans la balise d'entrée, sinon cela ne fonctionne pas.la source
Dans la mesure où je cherchais une réponse aussi, et je voulais l'accomplir avec CSS. J'ai trouvé une solution par CSS NINJA C'est une belle impelmentation
<input type="checkbox">
et une démo css Live ! Bien que cela ne fonctionne pas dans IE 8, vous pouvez implémenter selectivizr ! et corrigez le CSS où il est utiliséopacity
pourfilter
le faire fonctionner dans IE.EDIT 2014:
pour les nouveaux boutons à bascule, j'utilise la solution trouvée sur le blog Lea Verou visuellement similaire à la case iOS
la source