Как создать переключатель в Bootstrap
Я изначально создал веб-приложение в HTML, CSS и JavaScript, а затем попросил создать его снова в Bootstrap тоже. Я сделал все это хорошо, но у меня были кнопки переключения в веб-приложении, которые изменились обратно на кнопки радио (первоначально флажок) вместо кнопок переключения, которые у меня были изначально.
код кнопки:
<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>
и файлы JavaScript и CSS, с которыми связана HTML-страница:
<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">
есть ли способ изменить код, чтобы я мог вернуть кнопку переключения?
9 ответов:
первоначальный ответ от
отличный (неофициальный) Bootstrap переключатель доступен.
<input type="checkbox" name="my-checkbox" checked> $("[name='my-checkbox']").bootstrapSwitch();Он использует типы радио или флажки в качестве переключателей. А
typeатрибут был добавлен с V. 1. 8.исходный код доступно на Github.
Примечание от 2018
Я бы не рекомендовал использовать такие старые кнопки переключения сейчас, как им всегда казалось страдают от проблем юзабилити как отметили многие люди.
пожалуйста, подумайте о том, чтобы взглянуть на современные переключатели, как этот С React Component framework (Не Bootstrap связаны, но могут быть интегрированы в Bootstrap grid и UI, хотя).
другие реализации существуют для Angular, View или 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'))
Если вы не против изменить свой HTML, вы можете использовать на
<button>ы. Вижу односкоростная на кнопка примеры:<button type="button" class="btn btn-primary" data-toggle="button"> Single toggle </button>
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>чтобы они работали, вы должны инициализировать
.btns с помощью Javascript Bootstrap:$('.btn').button();
Я пытался активировать "активный" класс вручную с помощью javascript. Это не так удобно, как полная библиотека, но для простых случаев, кажется, достаточно:
var button = $('#myToggleButton'); button.on('click', function () { $(this).toggleClass('active'); });Если вы тщательно подумаете, "активный" класс используется bootstrap при нажатии кнопки, а не до или после этого (в нашем случае), поэтому нет никакого конфликта в повторном использовании того же класса.
попробуйте этот пример и скажите мне, если это не удается:http://jsbin.com/oYoSALI/1/edit?html, js, выход
Если вы хотите сохранить небольшую базу кода, и вам понадобится только кнопка переключения для небольшой части приложения. Я бы предложил вместо этого поддерживать ваш javascript-код самостоятельно (angularjs, javascript, jquery) и просто использовать простой CSS.
хороший генератор тумблеров:https://proto.io/freebies/onoff/
вы можете использовать библиотеку переключатель CSS для переключения. Просто включить CSS и программы ИС себя: http://ghinda.net/css-toggle-switch/bootstrap.html
вы можете использовать переключатель Material Design для Bootstrap 3.3.0
http://bootsnipp.com/snippets/featured/material-design-switch
вот это очень полезно Для Кнопки Переключения Bootstrap . Пример в фрагменте кода!! и jsfiddle ниже.
Я показал вам несколько примеров выше. Надеюсь, это поможет. JS Fiddle - это здесь Исходный код доступно на GitHub.<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>
в случае, если кто-то все еще ищет хороший переключатель/переключатель, я последовал предложению Рика и создал простую угловую директиву вокруг него,угловое-переключатель. Помимо предпочтения коммутатора в стиле Windows, общая загрузка также намного меньше (2kb vs 23kb minified css+js) по сравнению с угловым bootstrap-switch и bootstrap-switch, упомянутыми выше вместе.
вы бы использовали его следующим образом. Сначала включите необходимый файл 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>



Comments