Страницы

Поиск по вопросам

понедельник, 10 февраля 2020 г.

Кастомный Switch с подписями

#jquery #css #button #animate #switch


Есть Switch с подписями, при клике на сам switch он должен переключаться, так же
переключение может происходить при клике на значение.





.switch input {
  display: none;
}
.switch {
  width: 45px;
  height: 15px;
  position: relative;
  display: inline-block;
}
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: #00cc8c;
  transition: .3s;
}
.slider:before {
  content: "";
  height: 26px;
  width: 26px;
  position: absolute;
  left: 0;
  bottom: -5px;
  background-color: #008f62;
  transition: .3s;
}
input:checked + .slider {
  background-color: #f8ee7c;
}
input:focus + .slider {
  box-shadow: 0 0 1px #f8ee7c;
}
input:checked + .slider:before {
  transform: translateX(26px);
}
.slider.br {
  border-radius: 34px;
}
.slider.br:before {
  border-radius: 50%;
}





Возможно подключение jQuery. Сама изюминка вопроса в добавлении активных надписей
"Вкл/Выкл"

https://fiddle.jshell.net/w4t05476/
    


Ответы

Ответ 1



CSS: .selector-on { color: gray; cursor: pointer; } .selector-off { color: gray; cursor: pointer; } .switch input{ display:none; } .active-selector { color: #00cc8c; } .switch{ width: 45px; height: 15px; position: relative; display: inline-block; } .slider{ position: absolute; cursor: pointer; top: 0; right: 0; bottom: 0; left: 0; background-color: #00cc8c; transition: .3s; } .slider:before{ content: ""; height: 26px; width: 26px; position: absolute; left: 0; bottom: -5px; background-color: #008f62; transition: .3s; } input:checked + .slider{ background-color: #f8ee7c; } input:focus + .slider{ box-shadow: 0 0 1px #f8ee7c; } input:checked + .slider:before{ transform: translateX(26px); } .slider.br{ border-radius: 34px; } .slider.br:before{ border-radius: 50%; } HTML: On Off jQuery: function enableDisable(flag) { $('.my-checkbox').prop('checked', flag); $('.selector-on').toggleClass('active-selector', function() { return $(this).hasClass('active-selector') ? true : false; }); $('.selector-off').toggleClass('active-selector', function() { return $(this).hasClass('active-selector') ? true : false; }); } $('.selector-on').on('click', function(event) { return $(this).hasClass('active-selector') ? false : enableDisable(false); }); $('.selector-off').on('click', function(event) { return $(this).hasClass('active-selector') ? false : enableDisable(true); }); $('.my-checkbox').on('click', function() { if($(this).prop('checked')) { $('.selector-off').trigger('click'); } else { $('.selector-on').trigger('click'); } }); Пример

Ответ 2



$('input[type=checkbox]').before('On').after('Off'); $('input[type=checkbox]').onchange(function(){ $('#label_before').toggleClass('label_active'); $('#label_after').toggleClass('label_active'); }) Это если имеет смысл добавлять элементы через jQ. Я бы предпочел сразу все в html вставлять/через пхп генерить, не знаю, как там завязано у Вас все, но так не красиво, да и работает в идеале с одним свитчем. Код не тестировался, работоспособность не гарантируется. Гарантируется только смысл.

Ответ 3



.b-switch { margin: 15px 35px; font-family: 'segoe ui', sans-serif; font-size: 12px; } .b-switch input[type="checkbox"] { display: none; } .b-switch input[type="checkbox"] + label { width: 55px; height: 15px; position: relative; display: inline-block; background-color: #00cc8c; border-radius: 35px; transition: .3s; } .b-switch input[type="checkbox"] + label:before{ content: ""; position: absolute; left: -35px; top: 0; width: calc(100% + 70px); height: 100%; cursor: pointer; } .b-switch input[type="checkbox"] + label:after { content: ""; position: absolute; left: 0; bottom: -5px; height: 26px; width: 26px; background-color: #008f62; border-radius: 50%; cursor: pointer; transition: .3s; } .b-switch input[type="checkbox"] + label > span, .b-switch input[type="checkbox"] + label + span{ position: absolute; text-transform: uppercase; padding: 0 5px; color: #008F62; font-weight: 600; cursor: pointer; } .b-switch input[type="checkbox"] + label > span{ right: 100%; } .b-switch input[type="checkbox"]:checked + label{ background-color: #f8ee7c; } .b-switch input[type="checkbox"]:checked + label:after { left: calc(100% - 26px); } .b-switch input[type="checkbox"]:checked + label > span, .b-switch input[type="checkbox"] + label + span{ opacity: .5; pointer-events: none; } .b-switch input[type="checkbox"]:checked + label + span{ opacity: 1; }
Выкл
Выкл
Выкл


Комментариев нет:

Отправить комментарий