HTML

Для HTML у нас есть кружок, который запускает функцию toggle() при клике, и текст «FF», который изменится на «N» и наоборот.

<div class="container">
    <div class="toggle" onclick="toggle()">
        <div class="circle"></div>
    </div>
    <span class="text">FF</span>
</div>

ЯВАСКРИПТ

Для javascript сначала мы создадим переменную, в которой мы будем хранить состояние переключения. Сейчас мы установим для нее значение false.

let active = false

Теперь мы создадим функцию-переключатель, которая будет запускаться при щелчке по кругу. В начале мы выбираем переключатель и текстовый элемент с помощью метода querySelector. Затем мы изменим активный статус на противоположный его текущему значению, установка восклицательного знака («!») перед ним (!active). Если active было true, теперь оно станет false, и наоборот. Теперь, если active равно true, мы добавим активный класс для переключения элемента и изменим текст «FF» на «N». Если это ложь, мы удалим активный класс из элемента переключения и установите текст на «FF».

function toggle() {
    let toggle = document.querySelector('.toggle')
    let text = document.querySelector('.text')
    active = !active
    if (active) {
        toggle.classList.add('active')
        text.innerHTML = 'N'
    } else {
        toggle.classList.remove('active')
        text.innerHTML = 'FF'
    }
}

CSS

Для CSS мы начнем с установки размера и цвета шрифта для текстового элемента.

.text {
    font-size: 23px;
    color: #494949;
}

Элемент Toggle будет расположен относительно с размером 40x20px (вдвое шире круга, который мы установим позже). Мы установим закругленную рамку на темный dray, как если бы переключатель был выключен. Затем мы отобразим все в центре, используя flexbox. Наконец, я устанавливаю курсор на указатель, потому что этот элемент кликабельный, вызывает кнопку включения/выключения, и я добавляю переход, чтобы переключение было приятным и плавным.

.toggle {
    position: relative;
    width: 40px;
    height: 20px;
    border: 2px solid #494949;
    border-radius: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    transition: .3s;
}

Круг будет позиционирован абсолютно, а левый установлен на ноль. Это выключенный статус. Мы установим ширину и высоту на 20 пикселей (половина ширины родителя). Теперь добавим немного радиуса границы и установим цвет фона на темно-серый. Этот цвет станет зеленым при нажатии переключателя. Не забывайте о переходе.

.circle {
    position: absolute;
    left: 0;
    width: 20px;
    height: 20px;
    border-radius: 20px;
    background-color: #494949;
    transition: .3s;
}

Теперь мы стилизуем активный класс. Этот класс добавляется для переключения элемента при активном статусе. Мы просто установим зеленый цвет границы.

.active {
    border-color: rgb(85, 227, 180);
}

Теперь мы выберем брата с помощью селектора «плюс» («+») и установим его цвет на зеленый. Мы говорим о тексте «N» здесь.

.active + .text {
    color: rgb(85, 227, 180);
}

Наконец, мы стилизуем круг, когда он активен. Мы переместим его в правую часть контейнера, установив для свойства left значение 100% и переместив X на -100%. Мы также изменим цвет фона на зеленый и добавить переход.

.active .circle {
    left: 100%;
    transform: translateX(-100%);
    transition: .3s;
    background-color: rgb(85, 227, 180);
}

Вот и все.

Вы можете найти видеоурок и исходный код здесь.

Спасибо, что прочитали. ❤️