Aqui, quero criar um botão deslizante de alternância. Eu o criei, mas quando clico nele, "seu plano de fundo será azul e, quando eu clicar", seu plano de fundo será azul, mas aqui o texto está ficando oculto e desativado e é mostrado. Eu quero como nesta foto:
Toda vez que alterno apenas a cor de fundo para azul, quero mostrar os botões liga e desliga em sequência, como nesta imagem:
Então, quando clico para alternar a cor de fundo, de uma cor para outra com alguma transição, como fazer isso usando o código é fornecido abaixo.
import React, { useState } from 'react';
import './styles.css';
const App = () => {
const [isOn, setIsOn] = useState(false);
const toggleSwitch = () => {
setIsOn(!isOn);
};
return (<>
<div className="toggle-container">
<button
className={`toggle-button ${isOn ? 'on' : 'off'}`}
onClick={toggleSwitch}
style={{color:isOn?'blue':'white',textAlign:isOn?'left':'right'}}
>
{isOn ? 'On' : 'Off'}
</button>
</div>
</>
);
};
export default App;
e o css está abaixo
.toggle-button {
border:2px solid blue;
outline: none;
cursor: pointer;
width: 100px;
padding: 10px 20px;
border-radius: 25px;
font-weight: bold;
font-size: 16px;
transition: background-color 0.3s;
position: relative;
overflow: hidden;
}
.toggle-button:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 50%;
height: 100%;
background-color: blue;
transition: left 0.3s, background-color 0.3s;
}
.toggle-button.on:before {
left: 50%;
background-color: white;
}
.toggle-button.off {
background-color: blue;
}
.toggle-button.on {
background-color: white;
}
.toggle-button.on.off:before {
background-color: blue;
}
.toggle-button.off.on:before {
background-color: white;
}
Acho que entendi o que você está tentando fazer, mas acho que isso deveria ser feito com uma abordagem diferente, que tal algo assim, é um div na parte inferior que indica a opção selecionada.
Este é apenas um exemplo, você terá que aplicar lógica e eventos externos.
Boa sorte!
https://codesandbox.io/s/weathered-brook-yzkv2n?file=/src/App.js Código de reação:
CSS:
JSX: