Frontend practice/CSS

type='radio' button 처럼 사용하기

판다꼬마 2023. 4. 24. 21:41
728x90

 

문제

input 태그에 type='radio'를 사용하면 체크박스가 나오면 선택을 할 수 있다.

이 체크박스를 제거하고 버튼을 사용할 때와 비슷하게 radio를 구현하고자 하였다.

 

 

CSS 스타일링은 emotion을  사용하여 스타일하였다.

 

예제 코드

            <Label2>
              <InputGender
                type="radio"
                name="성별"
                value="MALE"
                onChange={oncChangeGender}
              />
              <span>남자</span>
            </Label2>
            <Label2>
              <InputGender
                type="radio"
                name="성별"
                value="FEMALE"
                onChange={oncChangeGender}
              />
              <span>여자</span>
            </Label2>

 

css

export const Label2 = styled.label`
  display: flex;
  align-items: center;
  justify-content: center;
  color: #969696;
  background-color: #ffffff;
  position: relative;
  box-sizing: border-box;
  box-shadow: 0 4px 4px 0 #00000040;
  border: 1px solid #969696;
  border-radius: 12px;
  width: 15rem;
  height: 3.5rem;
  outline: none;
  font-size: 1.3rem;
  padding: 10px 15px 12px;
  margin-top: 0.9rem;
  margin-bottom: 0.3rem;

  & input[type="radio"]:checked + span {
    color: black;
  }
`;

export const InputGender = styled.input`
  :focus {
    border: 1px solid gray;
  }
  ::placeholder {
    font-size: 1.3rem;
    font-weight: 200;
    color: #969696;
  }
  &[type="radio"] {
    display: none;
  }
`;

이런 스타일을 줘본적이 처음이라 처음에 굉장히 애를 먹었다. 

해결 방법은 input radio 버튼을 label로 감싼 후 span에 스타일을 적용시키는 방법으로 해결하였다.

구현 화면

 

초기 화면

클릭 시

728x90