Креативный кастомный чекбокс на CSS

Состояние у переключателя включено|выключено, можно усилить с помощью CSS кастомизации и смайлика.

Создание нативного чекбокса

Сначала создадим поле чекбокс в HTML-разметке и поставим его в центр страницы.


<label>
    <input type="checkbox">
    <span>
        <i></i>
    </span>
</label>

*{
    margin: 0;/*обнуление отступов*/
    padding: 0;/*обнуление полей*/
    box-sizing: border-box;
    font-family: 'Poppins', sans-serif;
}
body {
    display: flex;/*подключение сетки flexbox*/
    justify-content: center;/*горизонтальное выравнивание*/
    align-items: center;/*вертикальное выравнивание*/
    min-height: 100vh;/*на всю высоту экрана*/
}
label {
    position: relative;/*относительное позиционирование*/
    width: 160px;/*ширина метки*/
    height: 80px;/*высота метки*/
    cursor: pointer;
}

Креативный кастомный чекбокс на CSS

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


label input {
    appearance: none;/*скрыть чекбокс*/
}

Стилизация нового чекбокса

Как раз таки мы стилизуем тег span под новый чекбокс. Без галочки, то есть неотмеченный чекбокс у нас красного цвета.


label span {
    position: absolute;/*абсолютное позиционирование*/
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 80px;/*закругление углов*/
    background: #fe0000;/*цвет чекбокса*/
    transition: 0.5s;/*плавный переход состояния*/
    box-shadow: 0 15px 25px #fe000066;/*тень*/
}

Креативный кастомный чекбокс на CSS

Отметим чекбокс — поставим в поле input галочку (для демонстрации временно сделаю дефолтный чекбокс видимым). Сделаем отмеченный чекбокс зеленым цветом.


label input:checked ~ span{
    background: #05be05;/*цвет отмеченного чекбокса*/
    box-shadow: 0 15px 25px #05be0566;/*тень*/
}

Креативный кастомный чекбокс на CSS

Рисуем смайлик

Тег i мы прописали для смайлика. Нарисуем окружность, куда в дальнейшем приделаем рожицу.


label span i{
    position: absolute;
    top: 4px;
    left: 4px;
    width: 72px;/*ширина круга*/
    height: 72px;/*высота круга*/
    background: #fff;/*цвет круга*/
    border-radius: 50%;
    transition: 0.5s;
}

Креативный кастомный чекбокс на CSS

Зададим состояние checked для окружности — сдвинем круг вправо на 84 пикселей.


label input:checked ~ span i{
    left: 84px;/*сдвиг круга*/
}

Креативный кастомный чекбокс на CSS

Используя псевдоэлементы before и after, нарисуем глаза и рот.


label span i::before {
    content: '';
    position: absolute;
    top: 22px;
    left: 14px;
    width: 12px;/*ширина глаз*/
    height: 12px;
    border-radius: 50%;
    background: #fe0000;/*цвет глаз*/
    box-shadow: 31px 0 0 #fe0000;
    transition: 0.5s;
}
label span i::after {
    content: '';
    position: absolute;
    bottom: 15px;
    left: calc(50% - 15px);
    width: 30px;/*ширина рта*/
    height: 6px;/*высота рта*/
    border-radius: 6px;
    background: #fe0000;/*цвет рта*/
    transition: 0.5s;
}

Креативный кастомный чекбокс на CSS

Для состояния checked, нарисуем улыбку у смайлика.


label input:checked ~ span i::before {
    background: #05be05;
    box-shadow: 31px 0 0 #05be05;
}
label input:checked ~ span i::after {
    bottom: 12px;
    height: 15px;
    border-radius: 0;
    border-bottom-left-radius: 15px;
    border-bottom-right-radius: 15px;
    background: #05be05;
}

Креативный кастомный чекбокс на CSS

Источник