옵션 카드에 초점을 맞추는 동시에 라디오 단추의 스타일을 변경합니다
해결하고 싶은 과제
포커스가 맞으면 스타일을 바꾸고 싶어요
실제 작동 보기(from Runstant)
코드
index.html
index.html
<body>
<form id="form">
<div class="box">
<span class='title'>Radio</span>
<label class='label'>
<input type="radio" name="radio" value='type1' required/>
<span class='radio unchecked'>☆</span>
<span class='radio checked'>★</span>
<span class='radio_text'>type1</span>
</label>
<label class='label'>
<input type="radio" name="radio" value='type2' required/>
<span class='radio unchecked'>☆</span>
<span class='radio checked'>★</span>
<span class='radio_text'>type2</span>
</label>
</div>
<div class="box">
<span class='title'>Text</span>
<input type="text" name="text" required/>
</div>
<button id='button'>submit</button>
</form>
</body>
main.cssmain.css
input[type=radio] {
position: absolute;
opacity: 0;
appearance: none;
z-index: -1;
transform: scale(0.1);
}
input[type=radio]:checked {
position: absolute;
top: 0px;
left: 0px;
appearance: none;
}
input[type=radio]:focus ~.unchecked {
display: inline-block;
color: red;
}
input[type=radio]:focus ~.checked {
display: none;
color: red;
}
input[type=radio]:checked ~.unchecked {
display: none;
color: red;
}
input[type=radio]:checked ~.checked {
display: inline-block;
color: red;
}
input[type=radio]:invalid {
appearance: auto;
}
.radio {
margin-right: 8px;
}
.checked {
display: none;
}
.box {
display: flex;
margin-bottom: 16px;
}
.label {
display: flex;
margin-right: 8px;
cursor: pointer;
}
.title {
margin-right: 16px;
font-weight: bold
}
설명
이번에 하고 싶은 일의 요점은 1이다.기본 무선 버튼을 취소합니다.체크 상태와 포커스 상태에서 스타일을 바꿉니다.기본 확인 정보는 세 가지로 표시됩니다.
각자의 해결 방법은 다음과 같다.
기본 무선 버튼 취소
display: none;
에 사라졌지만 라디오 버튼에 Required가 있으면 기존의form에서 오류가 발생할 수 있습니다.opacity: 0;
외관상 사라졌다.position: absolute;
와z-index: -1;
로 사용자 정의 무선 버튼과 위치를 숨긴다.transform: scale(0.1);
물리적으로 줄였어요(이 근처에 다른 방법이 있는 것 같아요).check 상태와focus 상태에서 스타일 변경
:focus
와 :checked
가 분리되어 있는 매우 간단합니다..unchecked
가 있는 탭이 숨겨지고 .checked
가 있는 탭이 표시됩니다..unchecked
가 있는 라벨의 색을 변경했습니다.기본 프롬프트가 표시됩니다.
opacity
에서 표시가 취소된 상태에서는 확인 정보 자체도 투명해진다.:invalid
선택자appearance: auto;
를 설정했다.총결산
이번에는 맞춤형 버튼이 촌스러워요. 그런데 마테리아 icon을 사용하거나 그림을 사용하거나 더 진한 색깔 모양을 사용하면 괜찮아요.
요즘 form 태그에 부딪히는 벽이 많아서 많이 찾아보고 많이 배웠어요.
form 라벨을 잘 사용하면 자바스크립트를 사용하면 노력을 하지 않아도 됩니다. 무엇을 사용할 수 있는지 기억하고 적극적으로 사용하세요.
그게 다야.
Reference
이 문제에 관하여(옵션 카드에 초점을 맞추는 동시에 라디오 단추의 스타일을 변경합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/cho_kin/articles/customize-radio-button텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)