Comment créer un bouton de bascule dans Bootstrap
j'ai d'abord créé une application web en HTML, CSS et JavaScript, puis on m'a demandé de la créer à nouveau dans Bootstrap aussi. J'ai fait tout cela très bien, mais j'ai eu des boutons à bascule dans l'application web qui ont changé de nouveau à la radio (à l'origine case à cocher) boutons au lieu des boutons à bascule que j'avais à l'origine.
le code pour les boutons est:
<label>
Notifications
<span class='toggle'>
<input type='radio'
class='notifications'
name='notifications'
id='notifications' />
</span>
</li>
<label>
Preview
<span class='toggle'>
<input type='radio'
class='preview'
name='preview'
id='preview' />
</span>
</li>
et les fichiers JavaScript et CSS auxquels la page HTML renvoie sont:
<script src = 'jqtouch.js'></script>
<script src="jquery.js"></script>
<script src="js/bootstrap.js"></script>
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/bootstrap-responsive.css" rel="stylesheet">
est-ce qu'il y a un moyen de changer le code pour que je puisse récupérer le bouton à bascule?
9 réponses
réponse initiale de 2013
Un excellent (non officiel) Bootstrap Commutateur .
<input type="checkbox" name="my-checkbox" checked>
$("[name='my-checkbox']").bootstrapSwitch();
il utilise des cases à cocher de type radio ou comme commutateurs. Un attribut type
a été ajouté depuis V. 1.8.
Source code , disponible sur Github .
Note de 2018
Je ne recommande pas d'utiliser ce genre de vieux boutons maintenant, comme ils ont toujours semblé à souffrir de problèmes de convivialité comme souligné par de nombreuses personnes.
s'il vous Plaît envisager d'avoir un coup d'oeil à moderne Commutateurs comme celui-ci de la Réagir cadre de la Composante (pas de Bootstrap associées, mais peuvent être intégrés dans le Bootstrap grille de l'INTERFACE et de bien.)
D'autres implémentations existent pour Angular, View ou jQuery.
import '../assets/index.less'
import React from 'react'
import ReactDOM from 'react-dom'
import Switch from 'rc-switch'
class Switcher extends React.Component {
state = {
disabled: false,
}
toggle = () => {
this.setState({
disabled: !this.state.disabled,
})
}
render() {
return (
<div style={{ margin: 20 }}>
<Switch
disabled={this.state.disabled}
checkedChildren={'开'}
unCheckedChildren={'关'}
/>
</div>
</div>
)
}
}
ReactDOM.render(<Switcher />, document.getElementById('__react-content'))
si cela ne vous dérange pas de changer votre HTML, vous pouvez utiliser l'attribut data-toggle
sur <button>
S. Voir la single toggle section de the button examples :
<button type="button" class="btn btn-primary" data-toggle="button">
Single toggle
</button>
Bootstrap 3 a des options pour créer des boutons à bascule basés sur des cases à cocher ou des boutons radio: http://getbootstrap.com/javascript/#buttons
cases à cocher
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="checkbox" checked> Option 1 (pre-checked)
</label>
<label class="btn btn-primary">
<input type="checkbox"> Option 2
</label>
<label class="btn btn-primary">
<input type="checkbox"> Option 3
</label>
</div>
boutons Radio
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="options" id="option1" checked> Option 1 (preselected)
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option2"> Option 2
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option3"> Option 3
</label>
</div>
pour que cela fonctionne, vous devez initialiser .btn
s avec le Javascript de Bootstrap:
$('.btn').button();
j'ai essayé d'activer la classe 'active' manuellement avec javascript. Il n'est pas utilisable comme une bibliothèque complète, mais pour les cas faciles semble être suffisant:
var button = $('#myToggleButton');
button.on('click', function () {
$(this).toggleClass('active');
});
si vous réfléchissez bien, la classe 'active' est utilisée par bootstrap lorsque le bouton est pressé, pas avant ou après (notre cas), donc il n'y a aucun conflit dans la réutilisation de la même classe.
essayez cet exemple et dites-moi s'il échoue: http://jsbin.com/oYoSALI/1/edit?html,js, sortie
Si vous voulez garder une petite base de code, et vous allez en avoir besoin le bouton à bascule pour une petite partie de la demande. Je suggérerais plutôt de maintenir que vous êtes le code javascript votre auto (angularjs, javascript, jquery) et d'utiliser simplement CSS.
bon générateur de bouton à bascule: https://proto.io/freebies/onoff /
vous pouvez utiliser la bibliothèque de commutateurs à bascule CSS. Il suffit d'inclure la CSS et le programme js vous-même: http://ghinda.net/css-toggle-switch/bootstrap.html
vous pouvez utiliser le commutateur de conception de matériaux pour Bootstrap 3.3.0
http://bootsnipp.com/snippets/featured/material-design-switch
ici ce très utile pour Bootstrap Bouton À Bascule . Exemple dans le code snippet!! et jsfiddle en bas.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<input id="toggle-trigger" type="checkbox" checked data-toggle="toggle">
<button class="btn btn-success" onclick="toggleOn()">On by API</button>
<button class="btn btn-danger" onclick="toggleOff()">Off by API</button>
<button class="btn btn-primary" onclick="getValue()">Get Value</button>
<script>
//If you want to change it dynamically
function toggleOn() {
$('#toggle-trigger').bootstrapToggle('on')
}
function toggleOff() {
$('#toggle-trigger').bootstrapToggle('off')
}
//if you want get value
function getValue()
{
var value=$('#toggle-trigger').bootstrapToggle().prop('checked');
console.log(value);
}
</script>
Je vous ai montré quelques exemples ci-dessus. J'espère que cela aide.
Js Fiddle est ici
Le code Source est disponible sur GitHub.
dans le cas où quelqu'un est encore à la recherche d'un bon interrupteur/bouton à bascule, j'ai suivi la suggestion de Rick et créé une directive angulaire simple autour de lui, interrupteur angulaire . En plus de préférer un commutateur de style Windows, le téléchargement total est aussi beaucoup plus petit (2KB vs 23kb CSS minified+js) par rapport à angular-bootstrap-switch et bootstrap-switch mentionnés ci-dessus ensemble.
vous l'utilisez comme suit. Tout d'abord, inclure les js et css requis dossier:
<script src="./bower_components/angular-switch/dist/switch.js"></script>
<link rel="stylesheet" href="./bower_components/angular-switch/dist/switch.css"></link>
et l'activer dans votre application angulaire:
angular.module('yourModule', ['csComp'
// other dependencies
]);
Maintenant, vous êtes prêt à l'utiliser comme suit:
<switch state="vm.isSelected"
textlabel="Switch"
changed="vm.changed()"
isdisabled="{{isDisabled}}">
</switch>