#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; }ВыклВыклВыкл
Комментариев нет:
Отправить комментарий