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?

87
demandé sur Karol Selak 2012-11-22 15:05:41

9 réponses

réponse initiale de 2013

Un excellent (non officiel) Bootstrap Commutateur .

Classic 2013 Switch

<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.

Modern 2018 Switch

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'))
77
répondu smonff 2018-08-27 10:30:42

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>
56
répondu Sam 2014-07-22 00:00:08

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();
29
répondu StriplingWarrior 2014-09-18 18:37:14

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

7
répondu p2kmgcl 2013-11-27 12:54:39

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 /

5
répondu Rick 2016-04-19 16:13:37

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

2
répondu OMA 2014-04-04 18:30:17

vous pouvez utiliser le commutateur de conception de matériaux pour Bootstrap 3.3.0

http://bootsnipp.com/snippets/featured/material-design-switch

2
répondu Ivan Rodriguez 2016-01-07 10:21:55

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.
2
répondu Muhammet Can TONBUL 2017-05-05 11:54:35

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>

enter image description here

-1
répondu Erik Vullings 2016-05-11 18:13:08