Как создать переключатель включения / выключения с помощью Javascript / CSS?

Я хочу иметь скользящий переключатель. Слева будет выключено, а справа будет включено. Когда пользователь переключает переключатель, я хочуслайдер» часть, чтобы скользить на другую сторону и указать, что он выключен. Затем я мог бы получить обратный вызов, который принимает в качестве входного состояния состояние тумблера, чтобы я мог действовать соответственно.

есть идеи как это сделать?

 Felix Hagspiel08 янв. 2015 г., 14:12
я написалучебник о том, как создавать вкл / выкл переключатели только с CSS (также флажки и радио).Здесь вы можете увидеть демо
 esac17 дек. 2014 г., 10:14
Не уверен, что этот вопрос слишком широк после почти 5 лет его открытия. Это ясно обрисовывает в общих чертах то, что я ищу и получил ответ в тот же день, который отлично отвечает на вопрос. Вопрос все еще получает большую активность, и новые ответы, которые являются актуальными, публикуются через 4,5 года после постановки вопроса.

Ответы на вопрос(7)

Первоначальный ответ с 2013 года

Если вы неЯ думаю, что-то, связанное с Bootstrap, отлично (неофициально)Bootstrap Switch доступен.

Использует радиоили же флажки в качестве переключателей.type атрибут был добавлен начиная с V.1.8.

Исходный коддоступно на Github.

Примечание от 2018

Я бы не советовал сейчас использовать такие старые кнопки переключения, так как они всегдастрадать от проблем с юзабилити как указано многими людьми.

Пожалуйста, рассмотрите возможность взглянуть насовременные выключатели, как те.

 smonff20 июл. 2018 г., 20:13
@RolandPihlakas обновил ссылки
 Roland Pihlakas08 апр. 2015 г., 20:16
Ссылка перенаправляет наbootstrap-switch.org который не загружается. использованиеbootstrap-switch.org (с www; спасибо SO за визуальное скрытие www в моей ссылке) вместо этого, который загружается.

Используя простой JavaScript



  

     
     
      .on  { background:blue; }
      .off { background:red; }
     

     
     
        function toggleState(item){
           if(item.className == "on") {
              item.className="off";
           } else {
              item.className="on";
           }
        }
     
  

  
     
     
  


Использование jQuery

Если вы используете JQuery, вы можете сделать это с помощьютумблер функция, или используяtoggleClass функция внутри обработчика события click, например:

$(document).ready(function(){
    $('a#myButton').click(function(){
        $(this).toggleClass("btnClicked");
    });
});

Используя эффекты пользовательского интерфейса jQuery, вы можете анимировать переходы:http://jqueryui.com/demos/toggleClass/

Схема: создайте два элемента: ползунок / переключатель и впадину в качестве родителя ползунка. Чтобы переключить состояние, переключите ползунок между "на" и "выкл» учебный класс. В стиле для одного класса, набор "оставил" до 0 и уйтиправо" по умолчанию; для другого класса сделайте обратное:


.toggleSwitch {
    width: ...;
    height: ...;
    /* add other styling as appropriate to position element */
    position: relative;
}
.slider {
    background-image: url(...);
    position: absolute;
    width: ...;
    height: ...;
}
.slider.on {
    right: 0;
}
.slider.off {
    left: 0;
}


function replaceClass(elt, oldClass, newClass) {
    var oldRE = RegExp('\\b'+oldClass+'\\b');
    elt.className = elt.className.replace(oldRE, newClass);
}
function toggle(elt, on, off) {
    var onRE = RegExp('\\b'+on+'\\b');
    if (onRE.test(elt.className)) {
        elt.className = elt.className.replace(onRE, off);
    } else {
        replaceClass(elt, off, on);
    }
}

...

В качестве альтернативы, просто установите фоновое изображение дляна" а также "выкл» состояния, что гораздо проще, чем шутить с позиционированием.

Вы можете взглянуть на пользовательский интерфейс ShieldПереключить виджет, Это так же легко использовать, как это:




    jQuery(function ($) {
        $("#switch3").shieldSwitch({
        onText: "Yes, save it",
        ffText: "No, delete it",
        cls: "large"
    });

Решение Вопроса

Вы имеете в виду что-то вроде флажков IPhone? ПытатьсяТомас Рейнольдс Скрипт iOS Checkboxes:

Как только файлы станут доступны на вашем сайте, активировать скрипт очень просто:

...

$(document).ready(function() {
  $(':checkbox').iphoneStyle();
});

Результаты:

 FreeAsInBeer15 июл. 2014 г., 22:11
Это'Стоит отметить, что этоне бесплатно для коммерческого использования.
 realmag77715 мар. 2013 г., 00:08
proto.io/freebies/onoff - Сервис для генерации чистых вкл / выкл CSS3 переключателей с анимированными переходами.
 esac24 дек. 2009 г., 17:44
прекрасный. Я неу меня нет iphone, так что я неНе знаю, как это называется.
 Gregory Pakosz24 дек. 2009 г., 10:40
этот действительно отличный

Вы можете добиться этого с помощью HTML и CSS и конвертировать флажок в HTML-переключатель.

HTML

      
        
        
      

CSS

input.cmn-toggle-round + label {
  padding: 2px;
  width: 100px;
  height: 30px;
  background-color: #dddddd;
  -webkit-border-radius: 30px;
  -moz-border-radius: 30px;
  -ms-border-radius: 30px;
  -o-border-radius: 30px;
  border-radius: 30px;
}
input.cmn-toggle-round + label:before, input.cmn-toggle-round + label:after {
  display: block;
  position: absolute;
  top: 1px;
  left: 1px;
  bottom: 1px;
  content: "";
}
input.cmn-toggle-round + label:before {
  right: 1px;
  background-color: #f1f1f1;
  -webkit-border-radius: 30px;
  -moz-border-radius: 30px;
  -ms-border-radius: 30px;
  -o-border-radius: 30px;
  border-radius: 30px;
  -webkit-transition: background 0.4s;
  -moz-transition: background 0.4s;
  -o-transition: background 0.4s;
  transition: background 0.4s;
}
input.cmn-toggle-round + label:after {
  width: 40px;
  background-color: #fff;
  -webkit-border-radius: 100%;
  -moz-border-radius: 100%;
  -ms-border-radius: 100%;
  -o-border-radius: 100%;
  border-radius: 100%;
  -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
  -moz-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
  -webkit-transition: margin 0.4s;
  -moz-transition: margin 0.4s;
  -o-transition: margin 0.4s;
  transition: margin 0.4s;
}
input.cmn-toggle-round:checked + label:before {
  background-color: #8ce196;
}
input.cmn-toggle-round:checked + label:after {
  margin-left: 60px;
}

.cmn-toggle {
  position: absolute;
  margin-left: -9999px;
  visibility: hidden;
}
.cmn-toggle + label {
  display: block;
  position: relative;
  cursor: pointer;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

DEMO

 Magus25 окт. 2016 г., 09:18
Каждый раз, когда мне нужно переключиться, я использую этот метод. Просто простой флажок с надписью и CSS.

проверьте этот генератор:Вкл / Выкл FlipSwitch

Вы можете получить различные результаты стиля и только его CSS - без JavaScript!

 HPWD29 окт. 2013 г., 16:52
Это действительно очень хорошо.
 Gaurav Shah18 янв. 2013 г., 11:27
хороший.......
 James Jensen28 февр. 2017 г., 20:29
Чёрт, страница proto.io отсутствуетт работает.

Ваш ответ на вопрос