Bootstrapでトグルボタンを作成する方法


92

私は最初にHTML、CSS、JavaScriptでWebアプリを作成しましたが、Bootstrapでも再度作成するよう求められました。私はそれですべてうまく行きましたが、元々持っていたトグルボタンの代わりにラジオ(元はチェックボックス)ボタンに戻ったWebアプリのトグルボタンがありました。

ボタンのコードは次のとおりです。

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

HTMLページがリンクされているJavaScriptおよびCSSファイルは次のとおりです。

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

トグルボタンを元に戻すためにコードを変更する方法はありますか?


1
ここでは多くの例があるtwitter.github.com/bootstrap/javascript.html#buttons
itsme

リンクに感謝しますが、探しているものがありません。私が持っていたトグルボタンは、「オン」/「オフ」のような、iPhoneに表示されるようなものでした。それは理にかなっていますか?
Megan Sime、2012年

わかりましたので、jqtouch.jsに関連していて、自分自身をブートストラップしないようにしています
itsme

1
OK。それが簡単なら、それはgithubにあります。
Megan Sime

1
LOL男私はファイルの無限のリストを見る:)あなたはより具体的にできないのですか?:D
itme

回答:


80

2013年からの最初の回答

優れた(非公式の)ブートストラップスイッチが利用可能です

クラシック2013スイッチ

<input type="checkbox" name="my-checkbox" checked>
$("[name='my-checkbox']").bootstrapSwitch();

ラジオタイプまたはチェックボックスをスイッチとして使用します。type属性がV.1.8以降に追加されました。

ソースコードはGithub入手できます

2018年からのメモ

多くの人から指摘されているように、使いやすさの問題に常に悩まされているように思われるので、今はそのような古いスイッチボタンを使用することはお勧めしません。

React Componentフレームワークからこのような最新のスイッチを確認することを検討してください(Bootstrap関連ではありませんが、BootstrapグリッドとUIに統合できます)。

Angular、View、またはjQuery用の実装が他にもあります。

モダン2018スイッチ

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'))

ネイティブブートストラップスイッチ

ネイティブのBootstrapスイッチについては、以下のohkts11の回答をご覧ください。


19
私はこれらのスイッチを避けたい:ux.stackexchange.com/questions/1318/...
ckarbass

3
このサイトは存在しません
w3bMak3r 2015

そのとおりです@ w3bMak3r、ドメイン名が変更されました。更新しました。
smonff 2015

それは素晴らしいプラグインです。使いやすい。しかし、safari 5.1.7に問題があります。一度クリックすると、別のものが動いています。誰かがこれを解決できますか?
Sarower Jahan、2015

2
ブートストラップの切り替えは、別のブートストラップベースの代替である
チャールズ・P.

58

HTMLを変更してもかまわない場合はdata-toggle<button>s の属性を使用できます。ボタンの例シングルトグルセクションを参照してください。

<button type="button" class="btn btn-primary" data-toggle="button">
    Single toggle
</button>

1
チェックボックス/ラジオオプションのように、シングルトグルに内部チェックボックスを設定する方法はありますか?
Shimmy Weitzhandler 2015年

3
aria-pressed="true"状態を確認するために使用できます
brauliobo

31

Bootstrap 3には、チェックボックスまたはラジオボタンに基づいてトグルボタンを作成するオプションがあります。http://getbootstrap.com/javascript/#buttons

チェックボックス

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

ラジオボタン

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

これらが機能するためには.btn、BootstrapのJavaScriptでを初期化する必要があります。

$('.btn').button();

チェックボックス/ラジオオプションのように、シングルトグルに内部チェックボックスを設定する方法はありますか?
Shimmy Weitzhandler 2015年

@Shimmy:単一のチェックボックスをボタングループに配置しただけでも、同じ動作が得られます。チェックボックス付きのシングルトグルを取得するためのそれほど簡潔でない方法は知りません。
StriplingWarrior 2015年

7

私はjavascriptを使用して「アクティブ」クラスを手動でアクティブにしようとしています。それは完全なライブラリーとして使用可能ではありませんが、簡単な場合には十分であるようです:

var button = $('#myToggleButton');
button.on('click', function () {
  $(this).toggleClass('active');
});

注意深く考えると、「アクティブ」クラスはボタンが押されているときにその前後ではなく(私たちの場合)ブートストラップによって使用されるため、同じクラスを再利用しても競合はありません。

この例を試して、失敗したかどうかを教えてください:http : //jsbin.com/oYoSALI/1/edit?html,js,output


1
ユーザーはそれについて尋ねなかったと思いますが、あなたの応答は私の質問に答えただけです!
tetri

とにかくユーザーの次の質問だったと思います。
eaglei22 2017年

5

小さなコードベースを維持したい場合、アプリケーションのごく一部のトグルボタンだけが必要になります。代わりに、JavaScriptコードを自分で維持し(angularjs、javascript、jquery)、プレーンCSSを使用することをお勧めします。

良いトグルボタンジェネレーター:https : //proto.io/freebies/onoff/


3

ここで、これはBootstrap Toggle Buttonに非常に役立ちます。コードスニペットの例!! 以下のjsfiddle。

  <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>
上記の例をいくつか示しました。お役に立てば幸いです。Js Fiddle is here ソースコードはGitHub入手できます。

Bootstrap 4の2020を更新

私は2020年にbootstrap4-toggleを推奨しました。

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

<link href="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap4-toggle@3.6.1/css/bootstrap4-toggle.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap4-toggle@3.6.1/js/bootstrap4-toggle.min.js"></script>

<input id="toggle-trigger" type="checkbox" checked data-toggle="toggle" data-onstyle="success">
<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>


短く、要点を言えば、すばやく簡単な解決策でした。
Mayer Spitzer

2

CSS Toggle Switchライブラリーを使用できます。CSSを含め、JSを自分でプログラムするだけです。http//ghinda.net/css-toggle-switch/bootstrap.html


1
これで問題が解決する場合もありますが、リンクだけでなく、実際の情報をここに入力することをお勧めします。リンクのみの回答は適切な回答とは見なされず、おそらく削除されます。
エリクセニド2016年

しかし、これは説明へのリンクではありません。これは実際のライブラリへのリンクであり、その名前を私の回答で述べています。ここにライブラリのソースコード全体を投稿してよろしいですか?ライブラリの名前について言及せずに「このライブラリ:[リンク]を使用」と言っただけでは、私の答えは間違っていますが、名前について言及しているので、リンクがうまくいかないと/彼女は名前がわかっているので、どこか他の場所からライブラリをダウンロードしようとすることができます。
OMA

ライブラリのソースコード全体を投稿する必要はありませんが、少なくとも、その使用方法についてある程度の洞察を提供する必要があります。「CSSを組み込んでJSを自分でプログラムする」というのは、それほど多くのことを行うものではなく、OPや他のユーザーを支援するものではないでしょう。
エリクセニド2016年

2
まあ、それは本当に使いやすいです!CSSコードのサンプルの1つを含めて、JSをあなたがやりたいことでプログラムしてください。実際のJSプログラミングについてコメントすることはできません。元の投稿者がトグルボタンを使用するときに実行する特定のアクションを要求しなかったので、それについて他に何が言えるでしょうか。また、受け入れられた回答がOKと見なされるのはなぜですか?これは「リンクのみ」の回答でもあります。(「効果があるかどうかはわかりませんが、優れた(非公式の)ブートストラップスイッチが利用可能です。無線タイプを使用しています」)。なぜその答えは大丈夫ですか?リンクのみの性質についてはコメントしていません。
OMA



-1

誰かがまだ素敵なスイッチ/トグルボタンを探している場合に備えて、私はリックの提案に従い、その周りに単純な角度ディレクティブ、angular-switchを作成しました。Windowsスタイルのスイッチを優先することに加えて、合計ダウンロードは、上記のangular-bootstrap-switchおよびbootstrap-switchと比較して、はるかに小さくなります(2kb vs 23kb縮小css + js)。

次のように使用します。最初に、必要なjsおよびcssファイルを含めます。

<script src="./bower_components/angular-switch/dist/switch.js"></script>
<link rel="stylesheet" href="./bower_components/angular-switch/dist/switch.css"></link>

そして、角度アプリでそれを有効にします:

angular.module('yourModule', ['csComp'
    // other dependencies
]);

これで、次のように使用する準備ができました。

<switch state="vm.isSelected" 
    textlabel="Switch" 
    changed="vm.changed()"
    isdisabled="{{isDisabled}}">
</switch>

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.