React
[React] Toggle Component 애니메이션 구현
밍띠이
2024. 4. 15. 20:06
반응형
리엑트에서 기본적으로 토글 버튼은 두가지 상태를 가지는 버튼이라고 생각하면 된다.
이는 삼항연산자나 조건문을 가지고 '토글' 상태를 반대로 변경 시키며 구현할 수 있고,
여기에 애니메이션 효과를 추가하여 우리가 아는 토글 버튼의 모양으로 만들 수 있다.
인라인 스타일 형식에서는 해당 애니메이션을 구현하기어렵고,
true/false 의 boolean 값으로 두가지 상태를 가지게 구성하여
현재 상태에 따라 스타일을 다르게 주어 생성할 수 있다.
또한, 해당 토글 버튼을 컴포넌트로 만들어 필요할 때마다 불러내어 사용 가능하다.
- false
- true
토글 버튼 React code
import React, { useState } from "react";
import { ToggleContainer } from "./ToggleButton.styles";
const ToggleButton = () => {
const [isOn, setisOn] = useState(false);
const toggleHandler = () => {
setisOn(!isOn);
};
return (
<>
<ToggleContainer onClick={toggleHandler}>
<div
className={`toggle-container ${isOn ? "toggle--checked" : null}`}
/>
<div className={`toggle-circle ${isOn ? "toggle--checked" : null}`} />
</ToggleContainer>
</>
);
};
export default ToggleButton;
토글 버튼 스타일 코드
import styled from "styled-components";
export const ToggleContainer = styled.div`
position: relative;
cursor: pointer;
> .toggle-container {
width: 50px;
height: 29px;
border-radius: 20px;
background-color: #7d8fb3;
}
> .toggle--checked {
background-color: #3361ff;
transition: 0.5s;
}
> .toggle-circle {
position: absolute;
top: 2px;
left: 2px;
width: 25px;
height: 25px;
border-radius: 50%;
background-color: rgb(255, 254, 255);
transition: 0.5s;
}
> .toggle--checked {
left: 23px;
transition: 0.5s;
}
`;
반응형