Подтвердить что ты не робот

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

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

Любая идея, как это сделать?

4b9b3361

Ответ 1

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

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

...

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

Результаты:

Ответ 2

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

вы можете получить различные результаты в стиле и только css - нет javascript!

Ответ 3

Использование простого javascript

<html>

  <head>

     <!-- define on/off styles -->
     <style type="text/css">
      .on  { background:blue; }
      .off { background:red; }
     </style>

     <!-- define the toggle function -->
     <script language="javascript">
        function toggleState(item){
           if(item.className == "on") {
              item.className="off";
           } else {
              item.className="on";
           }
        }
     </script>
  </head>

  <body>
     <!-- call 'toggleState' whenever clicked -->
     <input type="button" id="btn" value="button" 
        class="off" onclick="toggleState(this)" />
  </body>

</html>

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

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

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

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

Ответ 4

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

Ответ 5

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

HTML

      <div class="switch">
        <input id="cmn-toggle-1" class="cmn-toggle cmn-toggle-round"  type="checkbox">
        <label for="cmn-toggle-1"></label>
      </div>

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

Ответ 6

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

<style type="text/css">
.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;
}
</style>
<script type="text/javascript">
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);
    }
}
</script>
...
<div class="toggleSwitch" onclick="toggle(this.firstChild, 'on', 'off');"><div class="slider off" /></div>

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

Ответ 7

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

https://proto.io/freebies/onoff/

Ответ 8

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

<input id="switch3" type="checkbox" value="" />

<script type="text/javascript">
    jQuery(function ($) {
        $("#switch3").shieldSwitch({
        onText: "Yes, save it",
        ffText: "No, delete it",
        cls: "large"
    });
</script>