В этой статье я расскажу, как разработать кнопку переключения в стиле
iOS с использованием
HTML,
CSS и
Jquery. Особенно мне нравится использование псевдо-элементов
CSS :before и
:after. Это позволяет сократить
HTML-код.
Примечание: для получения оптимального результата используйте браузеры
Chrome,
Firefox или
Safari.
HTML код
Код
HTML простой: нам всего лишь нужно включить элементы
checkbox и
switch DIV в тег
label:
Код
<label>
<input type="checkbox" name="checkboxName" class="checkbox"/>
<div class="switch"></div>
</label>
Switch контейнер
Простой
HTML код:
Код
.switch
{
width: 62px;
height: 32px;
background: #E5E5E5;
z-index: 0;
margin: 0;
padding: 0;
appearance: none;
border: none;
cursor: pointer;
position: relative;
border-radius:16px; //IE 11
-moz-border-radius:16px; //Mozilla
-webkit-border-radius:16px; //Chrome и Safari
}
После применения свойства
border-radius:
Использование стиля
Switch Before :before является псевдо-элементом, вставляет стиль/контент перед
DOM элементом:
Код
.switch:before
{
content: ' ';
position: absolute;
left: 1px;
top: 1px;
width: 60px;
height: 30px;
background: #FFFFFF;
z-index: 1;
border-radius:16px; //IE 11
-moz-border-radius:16px; //Mozilla
-webkit-border-radius:16px; //Chrome и Safari
}
Использование стиля
Switch After :after также является псевдо-элементом, вставляет стиль/контент после
DOM элемента. В данном примере установка продолжительности перехода усиливает эффект анимации:
Код
.switch:after
{
content: ' ';
height: 29px;
width: 29px;
border-radius: 28px;
z-index: 2;
background: #FFFFFF;
position: absolute;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
top: 1px;
left: 1px;
-webkit-box-shadow: 0 2px 5px #999999;
box-shadow: 0 2px 5px #999999;
}
Стили
SwitchOn :after :before Задаем зеленый цвет для фона и перемещение:
Код
.switchOn , .switchOn:before
{
background: #4cd964 !important;
}
.switchOn:after
{
left: 21px !important;
}
Jquery код
Содержит код
JavaScript, где в
$('.switch').click(function(){} -
switch является именем класса для
DIV. Используя
Jquery класс
toggleClass, можно добавлять и удалять класс
switchOn, реагируя на клики мыши:
Код
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function()
{
$('.switch').click(function()
{
$(this).toggleClass("switchOn");
});
});
</script>
Финальная версия CSS Элемент
checkbox можно скрыть, задав
display:none:
Код
.checkbox{display:none}
.switch
{
width: 62px;
height: 32px;
background: #E5E5E5;
z-index: 0;
margin: 0;
padding: 0;
appearance: none;
border: none;
cursor: pointer;
position: relative;
border-radius:16px; //IE 11
-moz-border-radius:16px; //Mozilla
-webkit-border-radius:16px; //Chrome и Safari
}
.switch:before
{
content: ' ';
position: absolute;
left: 1px;
top: 1px;
width: 60px;
height: 30px;
background: #FFFFFF;
z-index: 1;
border-radius:16px; //IE 11
-moz-border-radius:16px; //Mozilla
-webkit-border-radius:16px; //Chrome и Safari
}
.switch:after
{
content: ' ';
height: 29px;
width: 29px;
border-radius: 28px;
background: #FFFFFF;
position: absolute;
z-index: 2;
top: 1px;
left: 1px;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-box-shadow: 0 2px 5px #999999;
box-shadow: 0 2px 5px #999999;
}
.switchOn , .switchOn:before
{
background: #4cd964 !important;
}
.switchOn:after
{
left: 21px !important;
}
Перевод статьи «
iOS Style Switch Button using CSS3 and Jquery» был подготовлен дружной командой проекта
Сайтостроение от А до Я.