카테고리 없음
React) iOS 스타일의 Switch 버튼 만들기
Jude_Song
2023. 3. 15. 21:42
728x90
반응형
Component 코드
import styles from '../../../styles/Swtich.module.css';
const Switch = ({ isOn, handleToggle }) => {
// 랜덤 키를 생성하지 않으면 component로 분리하여 Switch를 객체화 하여도 input과 label의 아이디가 동일하여
// 객체화해서 따로사용할수가 없다.
const rand = Math.floor(Math.random() * 100);
const key = `${Date.now()}${rand}`;
return (
<>
<input
checked={isOn}
onChange={handleToggle}
className={styles.react__switch__checkbox}
id={`react-switch-new-${key}`}
type="checkbox"
/>
<label
style={{ background: isOn && '#4285F4' }}
className={styles.react__switch__label}
htmlFor={`react-switch-new-${key}`}
>
<span className={styles.react__switch__button} />
</label>
</>
);
};
export default Switch;
- CSS 코드
.react__switch__checkbox {
height: 0;
width: 0;
visibility: hidden;
}
.react__switch__label {
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
width: 60px;
height: 30px;
background: grey;
border-radius: 30px;
position: relative;
transition: background-color .2s;
}
.react__switch__label .react__switch__button {
content: '';
position: absolute;
top: 2px;
left: 2px;
width: 26px;
height: 26px;
border-radius: calc(100% / 2);
transition: 0.2s;
background: #fff;
box-shadow: 0 0 2px 0 rgba(10, 10, 10, 0.29);
}
.react__switch__checkbox:checked + .react__switch__label .react__switch__button {
left: calc(100% - 2px);
transform: translateX(-100%);
}
.react__switch__label:active .react__switch__button {
width: 30px;
}
참고 URL
https://upmostly.com/tutorials/build-a-react-switch-toggle-component
도움 되셨다면 하단의 광고 클릭 센스!!
728x90
반응형