다음을 사용하여 확인란의 스타일을 지정하려고합니다.
<input type="checkbox" style="border:2px dotted #00f;display:block;background:#ff0000;" />
그러나 스타일은 적용되지 않습니다. 확인란은 여전히 기본 스타일을 표시합니다. 지정된 스타일을 어떻게 지정합니까?
다음을 사용하여 확인란의 스타일을 지정하려고합니다.
<input type="checkbox" style="border:2px dotted #00f;display:block;background:#ff0000;" />
그러나 스타일은 적용되지 않습니다. 확인란은 여전히 기본 스타일을 표시합니다. 지정된 스타일을 어떻게 지정합니까?
답변:
최신 정보:
아래 답변은 CSS 3이 널리 보급되기 전의 상태를 나타냅니다. 최신 브라우저 (Internet Explorer 9 이상 포함)에서는 JavaScript를 사용하지 않고 원하는 스타일로 확인란을 대체하는 것이 더 간단합니다.
유용한 링크는 다음과 같습니다.
근본적인 문제가 바뀌지 않았다는 점은 주목할 가치가 있습니다. 여전히 확인란 요소에 스타일 (테두리 등)을 직접 적용 할 수 없으며 해당 스타일이 HTML 확인란의 표시에 영향을 미칩니다. 그러나 변경된 것은 이제 CSS 이외의 다른 것을 사용하여 실제 확인란을 숨기고 자신의 스타일 요소로 바꿀 수 있다는 것입니다. 특히, CSS는 이제 광범위하게 지원되는 :checked
선택기 가 있으므로 대체 된 항목의 확인란 상태를 올바르게 반영하도록 할 수 있습니다.
주문 답변
다음 은 스타일 체크 박스에 대한 유용한 기사 입니다. 기본적으로 해당 작성자는 브라우저마다 브라우저마다 매우 다양하며 스타일을 지정하는 방식에 관계없이 많은 브라우저에서 항상 기본 확인란을 표시합니다. 정말 쉬운 방법은 없습니다.
JavaScript를 사용하여 확인란의 이미지를 오버레이하고 해당 이미지를 클릭하면 실제 확인란이 선택되는 해결 방법을 상상하기 어렵지 않습니다. JavaScript가없는 사용자에게는 기본 확인란이 표시됩니다.
추가하기 위해 편집 : 여기 당신을 위해 좋은 스크립트가 있습니다 ; 실제 확인란 요소를 숨기고 스타일 범위로 바꾸고 클릭 이벤트를 리디렉션합니다.
CSS 만 사용하여이를 수행 할 수있는 방법이 있습니다. label
요소를 사용하고 대신 해당 요소의 스타일을 지정할 수 있습니다 . 주의 사항은 Internet Explorer 8 이하 버전에서는 작동하지 않는다는 것입니다.
.myCheckbox input {
position: relative;
z-index: -9999;
}
.myCheckbox span {
width: 20px;
height: 20px;
display: block;
background: url("link_to_image");
}
.myCheckbox input:checked + span {
background: url("link_to_another_image");
}
<label for="test">Label for my styled "checkbox"</label>
<label class="myCheckbox">
<input type="checkbox" name="test" />
<span></span>
</label>
input
키보드는 키보드 포커스를 사용하지 않으므로 키보드로는 도달 할 수 없습니다.
:after
및 :before
의사 클래스 와 함께 제공되는 새로운 기능을 사용하면 멋진 사용자 정의 확인란 효과를 얻을 수 있습니다 . 이것의 장점은 다음과 같습니다. DOM에 더 많은 것을 추가 할 필요없이 표준 확인란 만 추가하면됩니다.
이것은 호환되는 브라우저에서만 작동합니다. 나는 이것이 일부 브라우저가 입력 요소 를 설정 :after
하고 설정할 수 없다는 사실과 관련이 있다고 생각합니다 :before
. 불행히도 현재 WebKit 브라우저 만 지원됩니다. Firefox + Internet Explorer는 여전히 확인란의 기능을 그대로 유지하고 스타일을 변경하지 않을 것이며 앞으로 코드가 벤더 접두사를 사용하지 않기 때문에 바뀔 것입니다.
이것은 WebKit 브라우저 솔루션 전용입니다 (Chrome, Safari, 모바일 브라우저)
$(function() {
$('input').change(function() {
$('div').html(Math.random());
});
});
/* Main Classes */
.myinput[type="checkbox"]:before {
position: relative;
display: block;
width: 11px;
height: 11px;
border: 1px solid #808080;
content: "";
background: #FFF;
}
.myinput[type="checkbox"]:after {
position: relative;
display: block;
left: 2px;
top: -11px;
width: 7px;
height: 7px;
border-width: 1px;
border-style: solid;
border-color: #B3B3B3 #dcddde #dcddde #B3B3B3;
content: "";
background-image: linear-gradient(135deg, #B1B6BE 0%, #FFF 100%);
background-repeat: no-repeat;
background-position: center;
}
.myinput[type="checkbox"]:checked:after {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAQAAABuW59YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB2SURBVHjaAGkAlv8A3QDyAP0A/QD+Dam3W+kCAAD8APYAAgTVZaZCGwwA5wr0AvcA+Dh+7UX/x24AqK3Wg/8nt6w4/5q71wAAVP9g/7rTXf9n/+9N+AAAtpJa/zf/S//DhP8H/wAA4gzWj2P4lsf0JP0A/wADAHB0Ngka6UmKAAAAAElFTkSuQmCC'), linear-gradient(135deg, #B1B6BE 0%, #FFF 100%);
}
.myinput[type="checkbox"]:disabled:after {
-webkit-filter: opacity(0.4);
}
.myinput[type="checkbox"]:not(:disabled):checked:hover:after {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAQAAABuW59YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB2SURBVHjaAGkAlv8A3QDyAP0A/QD+Dam3W+kCAAD8APYAAgTVZaZCGwwA5wr0AvcA+Dh+7UX/x24AqK3Wg/8nt6w4/5q71wAAVP9g/7rTXf9n/+9N+AAAtpJa/zf/S//DhP8H/wAA4gzWj2P4lsf0JP0A/wADAHB0Ngka6UmKAAAAAElFTkSuQmCC'), linear-gradient(135deg, #8BB0C2 0%, #FFF 100%);
}
.myinput[type="checkbox"]:not(:disabled):hover:after {
background-image: linear-gradient(135deg, #8BB0C2 0%, #FFF 100%);
border-color: #85A9BB #92C2DA #92C2DA #85A9BB;
}
.myinput[type="checkbox"]:not(:disabled):hover:before {
border-color: #3D7591;
}
/* Large checkboxes */
.myinput.large {
height: 22px;
width: 22px;
}
.myinput.large[type="checkbox"]:before {
width: 20px;
height: 20px;
}
.myinput.large[type="checkbox"]:after {
top: -20px;
width: 16px;
height: 16px;
}
/* Custom checkbox */
.myinput.large.custom[type="checkbox"]:checked:after {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGHRFWHRBdXRob3IAbWluZWNyYWZ0aW5mby5jb23fZidLAAAAk0lEQVQ4y2P4//8/AyUYwcAD+OzN/oMwshjRBoA0Gr8+DcbIhhBlAEyz+qZZ/7WPryHNAGTNMOxpJvo/w0/uP0kGgGwGaZbrKgfTGnLc/0nyAgiDbEY2BCRGdCDCnA2yGeYVog0Aae5MV4c7Gzk6CRqAbDM2w/EaQEgzXgPQnU2SAcTYjNMAYm3GaQCxNuM0gFwMAPUKd8XyBVDcAAAAAElFTkSuQmCC'), linear-gradient(135deg, #B1B6BE 0%, #FFF 100%);
}
.myinput.large.custom[type="checkbox"]:not(:disabled):checked:hover:after {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGHRFWHRBdXRob3IAbWluZWNyYWZ0aW5mby5jb23fZidLAAAAk0lEQVQ4y2P4//8/AyUYwcAD+OzN/oMwshjRBoA0Gr8+DcbIhhBlAEyz+qZZ/7WPryHNAGTNMOxpJvo/w0/uP0kGgGwGaZbrKgfTGnLc/0nyAgiDbEY2BCRGdCDCnA2yGeYVog0Aae5MV4c7Gzk6CRqAbDM2w/EaQEgzXgPQnU2SAcTYjNMAYm3GaQCxNuM0gFwMAPUKd8XyBVDcAAAAAElFTkSuQmCC'), linear-gradient(135deg, #8BB0C2 0%, #FFF 100%);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="width:100%">
<tr>
<td>Normal:</td>
<td><input type="checkbox" /></td>
<td><input type="checkbox" checked="checked" /></td>
<td><input type="checkbox" disabled="disabled" /></td>
<td><input type="checkbox" disabled="disabled" checked="checked" /></td>
</tr>
<tr>
<td>Small:</td>
<td><input type="checkbox" class="myinput" /></td>
<td><input type="checkbox" checked="checked" class="myinput" /></td>
<td><input type="checkbox" disabled="disabled" class="myinput" /></td>
<td><input type="checkbox" disabled="disabled" checked="checked" class="myinput" /></td>
</tr>
<tr>
<td>Large:</td>
<td><input type="checkbox" class="myinput large" /></td>
<td><input type="checkbox" checked="checked" class="myinput large" /></td>
<td><input type="checkbox" disabled="disabled" class="myinput large" /></td>
<td><input type="checkbox" disabled="disabled" checked="checked" class="myinput large" /></td>
</tr>
<tr>
<td>Custom icon:</td>
<td><input type="checkbox" class="myinput large custom" /></td>
<td><input type="checkbox" checked="checked" class="myinput large custom" /></td>
<td><input type="checkbox" disabled="disabled" class="myinput large custom" /></td>
<td><input type="checkbox" disabled="disabled" checked="checked" class="myinput large custom" /></td>
</tr>
</table>
$(function() {
var f = function() {
$(this).next().text($(this).is(':checked') ? ':checked' : ':not(:checked)');
};
$('input').change(f).trigger('change');
});
body {
font-family: arial;
}
.flipswitch {
position: relative;
background: white;
width: 120px;
height: 40px;
-webkit-appearance: initial;
border-radius: 3px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
outline: none;
font-size: 14px;
font-family: Trebuchet, Arial, sans-serif;
font-weight: bold;
cursor: pointer;
border: 1px solid #ddd;
}
.flipswitch:after {
position: absolute;
top: 5%;
display: block;
line-height: 32px;
width: 45%;
height: 90%;
background: #fff;
box-sizing: border-box;
text-align: center;
transition: all 0.3s ease-in 0s;
color: black;
border: #888 1px solid;
border-radius: 3px;
}
.flipswitch:after {
left: 2%;
content: "OFF";
}
.flipswitch:checked:after {
left: 53%;
content: "ON";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<h2>Webkit friendly mobile-style checkbox/flipswitch</h2>
<input type="checkbox" class="flipswitch" />
<span></span>
<br>
<input type="checkbox" checked="checked" class="flipswitch" />
<span></span>
원래 질문과 답변은 이제 ~ 5 세입니다. 따라서 이것은 약간의 업데이트입니다.
첫째, 스타일 체크 박스와 관련하여 여러 가지 접근 방식이 있습니다. 기본 교리는 다음과 같습니다.
브라우저에서 스타일이 지정된 기본 확인란 컨트롤을 숨겨야하며 CSS를 사용하여 의미있는 방식으로 재정의 할 수 없습니다.
컨트롤을 숨겨도 여전히 체크 상태를 감지하고 토글 할 수 있어야합니다.
체크 박스의 체크 상태는 새로운 요소를 스타일링하여 반영해야합니다
위의 방법은 여러 가지 방법으로 달성 할 수 있으며 CSS3 의사 요소를 사용하는 것이 올바른 방법 인 경우가 종종 있습니다. 실제로, 옳고 그른 방법은 없으며, 그것이 당신이 그것을 사용할 상황에 가장 적합한 접근법에 달려 있습니다.
확인란을 label
요소로 감싸십시오 . 이것은 숨겨져 있어도 레이블 내의 아무 곳이나 클릭해도 체크 상태를 전환 할 수 있음을 의미합니다.
확인란 숨기기
새로운 요소를 추가 한 후 그에 따라 스타일을합니다 확인란을 선택합니다. CSS를 사용하여 선택하고 :checked
상태에 따라 스타일을 지정할 수 있도록 확인란 뒤에 표시되어야합니다 . CSS는 '뒤로'를 선택할 수 없습니다.
그러나 이봐! 나는 당신이 소리를 듣는다. 상자에 작은 진드기 나 십자 표시를하려면 어떻게해야합니까? 그리고 배경 이미지를 사용하고 싶지 않습니다!
CSS3의 유사 요소가 작용할 수있는 곳입니다. 이들은 상태를 나타내는 유니 코드 아이콘content
을 주입 할 수 있는 속성을 지원합니다 . 다른 방법으로, 같은 타사 글꼴 아이콘 소스를 사용할 수있는 글꼴 최고 (메이크업은 당신이 또한 관련 설정하지만 예에를 )font-family
FontAwesome
label input {
display: none; /* Hide the default checkbox */
}
/* Style the artificial checkbox */
label span {
height: 10px;
width: 10px;
border: 1px solid grey;
display: inline-block;
position: relative;
}
/* Style its checked state...with a ticked icon */
[type=checkbox]:checked + span:before {
content: '\2714';
position: absolute;
top: -5px;
left: 0;
}
<label>
<input type='checkbox'>
<span></span>
Checkbox label text
</label>
display: none
.
visibility: hidden;
로 opacity: 0 !important;
여전히 탭 이동에 문제가있는 경우.
SW4의 답변에 대한 조언을 따르겠습니다 . 확인란을 숨기고 맞춤 범위로 표시하여 다음 HTML을 제안하십시오.
<label>
<input type="checkbox">
<span>send newsletter</span>
</label>
랩인 레이블을 사용하면 "for-id"속성 링크없이 텍스트를 깔끔하게 클릭 할 수 있습니다. 하나,
visibility: hidden
또는display: none
클릭하거나 두드려서 작동하지만 확인란을 사용하는 절름발이입니다. 일부 사람들은 여전히 Tab초점을 이동 Space하고 활성화하고 해당 방법으로 숨기면 훨씬 더 효과적 입니다. 양식이 길면 다른 사람의 손목을 사용 tabindex
하거나 accesskey
속성으로 저장 합니다. 그리고 시스템 체크 박스 동작을 관찰하면 호버에 알맞은 그림자가 있습니다. 스타일이 올바른 확인란은이 동작을 따라야합니다.
cobberboy의 답변 은 글꼴이 확장 가능한 벡터이기 때문에 일반적으로 비트 맵보다 나은 Font Awesome 을 권장 합니다. 위의 HTML을 사용하여 다음 CSS 규칙을 제안합니다.
확인란 숨기기
input[type="checkbox"] {
position: absolute;
opacity: 0;
z-index: -1;
}
z-index
내 예제에서는 충분히 큰 확인란 스킨을 사용하여 완전히 덮을 수 있으므로 음수 를 사용합니다. left: -999px
모든 레이아웃에서 재사용 할 수 없기 때문에 권장하지 않습니다 . Bushan wagh의 답변 은 방탄 방법을 제공하여 브라우저를 숨기고 브라우저가 tabindex를 사용하도록 유도하므로 좋은 대안입니다. 어쨌든, 둘 다 단지 해킹입니다. 오늘 올바른 방법 appearance: none
은 Joost의 답변을 참조하십시오 .
input[type="checkbox"] {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
스타일 체크 박스 라벨
input[type="checkbox"] + span {
font: 16pt sans-serif;
color: #000;
}
확인란 스킨 추가
input[type="checkbox"] + span:before {
font: 16pt FontAwesome;
content: '\00f096';
display: inline-block;
width: 16pt;
padding: 2px 0 0 3px;
margin-right: 0.5em;
}
\00f096
Font Awesome 's square-o
이며, 패딩은 초점에 점선 윤곽선을 제공하도록 조정됩니다 (아래 참조).
체크 박스 체크 스킨 추가
input[type="checkbox"]:checked + span:before {
content: '\00f046';
}
\00f046
Font Awesome 's check-square-o
와 (와) 같은 너비가 아니므로 square-o
위의 너비 스타일의 이유입니다.
초점 개요 추가
input[type="checkbox"]:focus + span:before {
outline: 1px dotted #aaa;
}
Safari는이 기능을 제공하지 않으므로 (@Jason Sankey의 설명 참조) window.navigator
브라우저 인 경우 브라우저를 감지하여 Safari 인 경우 건너 뛰어야합니다.
비활성화 확인란의 회색 설정
input[type="checkbox"]:disabled + span {
color: #999;
}
비활성화되지 않은 확인란에 호버 그림자 설정
input[type="checkbox"]:not(:disabled) + span:hover:before {
text-shadow: 0 1px 2px #77F;
}
확인란 위로 마우스를 가져 Tab가고 Shift+ Tab를 사용 하여 이동하고 Space전환합니다.
label
예제가 아래에 있는 요소를 사용하여 약간의 속임수로 확인란의 스타일을 지정할 수 있습니다 .
.checkbox > input[type=checkbox] {
visibility: hidden;
}
.checkbox {
position: relative;
display: block;
width: 80px;
height: 26px;
margin: 0 auto;
background: #FFF;
border: 1px solid #2E2E2E;
border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
}
.checkbox:after {
position: absolute;
display: inline;
right: 10px;
content: 'no';
color: #E53935;
font: 12px/26px Arial, sans-serif;
font-weight: bold;
text-transform: capitalize;
z-index: 0;
}
.checkbox:before {
position: absolute;
display: inline;
left: 10px;
content: 'yes';
color: #43A047;
font: 12px/26px Arial, sans-serif;
font-weight: bold;
text-transform: capitalize;
z-index: 0;
}
.checkbox label {
position: absolute;
display: block;
top: 3px;
left: 3px;
width: 34px;
height: 20px;
background: #2E2E2E;
cursor: pointer;
transition: all 0.5s linear;
-webkit-transition: all 0.5s linear;
-moz-transition: all 0.5s linear;
border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
z-index: 1;
}
.checkbox input[type=checkbox]:checked + label {
left: 43px;
}
<div class="checkbox">
<input id="checkbox1" type="checkbox" value="1" />
<label for="checkbox1"></label>
</div>
그리고 위 코드에 대한 FIDDLE . 일부 CSS는 이전 버전의 브라우저에서는 작동하지 않지만 멋진 JavaScript 예제가 있습니다.
많은 검색과 테스트를 거친 후에 구현하기 쉽고 사용자 정의하기 쉬운이 솔루션을 얻었습니다. 이 솔루션에서 :
흐르는 CSS를 페이지 상단에 놓으면 모든 확인란 스타일이 다음과 같이 변경됩니다.
input[type=checkbox] {
transform: scale(1.5);
}
input[type=checkbox] {
width: 30px;
height: 30px;
margin-right: 8px;
cursor: pointer;
font-size: 17px;
visibility: hidden;
}
input[type=checkbox]:after {
content: " ";
background-color: #fff;
display: inline-block;
margin-left: 10px;
padding-bottom: 5px;
color: #00BFF0;
width: 22px;
height: 25px;
visibility: visible;
border: 1px solid #00BFF0;
padding-left: 3px;
border-radius: 5px;
}
input[type=checkbox]:checked:after {
content: "\2714";
padding: -5px;
font-weight: bold;
}
추가 마크 업을 추가하지 않아도됩니다. 이것은 CSS 설정을 통해 데스크탑 용 IE를 제외하고 모든 곳에서 작동하지만 Windows Phone 및 Microsoft Edge 용 IE에서는 작동합니다 appearance
.
input[type="checkbox"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
/* Styling checkbox */
width: 16px;
height: 16px;
background-color: red;
}
input[type="checkbox"]:checked {
background-color: green;
}
<input type="checkbox" />
CSS를 사용하여 색상을 쉽게 수정할 수 있기 때문에 아이콘 글꼴 (예 : FontAwesome)을 사용하는 것이 좋으며 픽셀 밀도가 높은 장치에서 실제로 잘 확장됩니다. 위의 것과 유사한 기술을 사용하는 또 다른 순수한 CSS 변형이 있습니다.
(아래는 정적 이미지이므로 결과를 시각화 할 수 있습니다 . 대화식 버전 은 JSFiddle 을 참조하십시오 .)
다른 솔루션과 마찬가지로 label
요소를 사용합니다 . 옆에 span
체크 박스 문자가 있습니다.
span.bigcheck-target {
font-family: FontAwesome; /* Use an icon font for the checkbox */
}
input[type='checkbox'].bigcheck {
position: relative;
left: -999em; /* Hide the real checkbox */
}
input[type='checkbox'].bigcheck + span.bigcheck-target:after {
content: "\f096"; /* In fontawesome, is an open square (fa-square-o) */
}
input[type='checkbox'].bigcheck:checked + span.bigcheck-target:after {
content: "\f046"; /* fontawesome checked box (fa-check-square-o) */
}
/* ==== Optional - colors and padding to make it look nice === */
body {
background-color: #2C3E50;
color: #D35400;
font-family: sans-serif;
font-weight: 500;
font-size: 4em; /* Set this to whatever size you want */
}
span.bigcheck {
display: block;
padding: 0.5em;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
<span class="bigcheck">
<label class="bigcheck">
Cheese
<input type="checkbox" class="bigcheck" name="cheese" value="yes" />
<span class="bigcheck-target"></span>
</label>
</span>
여기 JSFiddle 이 있습니다.
font-family: FontAwesome;
으로 font-family: 'Font Awesome\ 5 Free';
당신이 새 버전에서 작동하게하려면, 업데이트 유니 코드 내용.
최근에 문제에 대한 흥미로운 해결책을 찾았습니다.
당신이 사용할 수 appearance: none;
있는 체크 박스의 기본 스타일을 해제 한 다음 설명을 좋아 위에 직접 작성하는 여기 (예 4) .
불행히도 브라우저 지원은 appearance
옵션에 매우 좋지 않습니다 . 내 개인 테스트에서 Opera와 Chrome 만 올바르게 작동했습니다. 그러나 이것은 더 나은 지원이 오거나 Chrome / Opera 만 사용하려고 할 때 간단하게 유지하는 방법입니다.
appearance
우리에게 필요한 것입니다. "비표준이고 표준 트랙에 있지 않다"는 것을 명심하십시오 .
순수 CSS, 아무것도 공상으로 :before
하고 :after
, 아니 변환, 다음 예와 같이 인라인 배경 이미지로 기본 모양 다음 스타일을 해제 할 수 있습니다. Chrome, Firefox, Safari 및 이제 Edge (Chromium Edge)에서 작동합니다.
INPUT[type=checkbox]:focus
{
outline: 1px solid rgba(0, 0, 0, 0.2);
}
INPUT[type=checkbox]
{
background-color: #DDD;
border-radius: 2px;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
width: 17px;
height: 17px;
cursor: pointer;
position: relative;
top: 5px;
}
INPUT[type=checkbox]:checked
{
background-color: #409fd6;
background: #409fd6 url("data:image/gif;base64,R0lGODlhCwAKAIABAP////3cnSH5BAEKAAEALAAAAAALAAoAAAIUjH+AC73WHIsw0UCjglraO20PNhYAOw==") 3px 3px no-repeat;
}
<form>
<label><input type="checkbox">I Agree To Terms & Conditions</label>
</form>
input[type="checkbox"] {
cursor: pointer;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
outline: 0;
background: lightgray;
height: 16px;
width: 16px;
border: 1px solid white;
}
input[type="checkbox"]:checked {
background: #2aa1c0;
}
input[type="checkbox"]:hover {
filter: brightness(90%);
}
input[type="checkbox"]:disabled {
background: #e6e6e6;
opacity: 0.6;
pointer-events: none;
}
input[type="checkbox"]:after {
content: '';
position: relative;
left: 40%;
top: 20%;
width: 15%;
height: 40%;
border: solid #fff;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
display: none;
}
input[type="checkbox"]:checked:after {
display: block;
}
input[type="checkbox"]:disabled:after {
border-color: #7b7b7b;
}
<input type="checkbox"><br>
<input type="checkbox" checked><br>
<input type="checkbox" disabled><br>
<input type="checkbox" disabled checked><br>
appearance: none
기본 브라우저가없고 모든 스타일이 올바르게 적용되도록 최신 브라우저에서 간단히 사용할 수 있습니다 .
input[type=checkbox] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
display: inline-block;
width: 2em;
height: 2em;
border: 1px solid gray;
outline: none;
vertical-align: middle;
}
input[type=checkbox]:checked {
background-color: blue;
}
나는 스크롤 스크롤 된 톤 이 답변은 단순히 문 밖으로 접근성을 던져 WCAG을 위반하는 하나 이상의 방법으로. 사용자 정의 체크 박스를 사용할 때 대부분 사용자 정의 라디오 버튼을 원하기 때문에 라디오 버튼을 던졌습니다.
피들 :
늦게 파티에 어떻게 든이 여전히 어려운 2019 I는 나의 세 가지 솔루션을 추가 한 그래서 2020 접근 하고 쉽게 에서 드롭을.
이것들은 모두 JavaScript 무료 , 외부 라이브러리 무료 * 및 액세스 가능합니다 ...
이 중 하나를 사용하여 플러그 앤 플레이하려면 바이올린에서 스타일 시트를 복사하고 CSS에서 색상 코드를 편집하여 필요에 맞게 편집하십시오. 확인란을 원하는 경우 사용자 지정 svg 확인 표시 아이콘을 추가 할 수 있습니다. 나는 CSS가 아닌 사람들을 위해 많은 의견을 추가했습니다.
긴 텍스트 또는 작은 컨테이너가 있고 확인란 또는 라디오 버튼 입력 아래에 텍스트 줄 바꿈이 발생하면 다음 과 같이 div로 변환 하십시오 .
더 긴 설명 :
WCAG를 위반하지 않고 JavaScript 또는 외부 라이브러리에 의존하지 않고 탭 또는 스페이스 바와 같은 키보드 탐색을 선택하지 않아 초점 이벤트를 허용하는 포커스 이벤트를 허용하는 확인란이 비활성화 된 솔루션이 필요했습니다. 모두 확인하고 선택 해제되고 마지막으로 내가 다른와 함께하고자 그러나 내가 체크 박스의 모양을 사용자 정의 할 수있는 솔루션 background-color
의, border-radius
, svg
배경 등
@ Jan Turoň 의이 답변 을 조합 하여 꽤 잘 작동하는 것처럼 보이는 자체 솔루션을 만들었습니다. 라디오 버튼으로도 작동하도록 확인란에서 동일한 코드를 많이 사용하는 라디오 버튼 바이올린을 수행했습니다.
나는 여전히 접근성을 배우고있어서 뭔가를 놓친 경우 의견을 적어주십시오. 내 확인란의 코드 예는 여기에서 수정하려고합니다.
input[type="checkbox"] {
position: absolute;
opacity: 0;
z-index: -1;
}
/* Text color for the label */
input[type="checkbox"]+span {
cursor: pointer;
font: 16px sans-serif;
color: black;
}
/* Checkbox un-checked style */
input[type="checkbox"]+span:before {
content: '';
border: 1px solid grey;
border-radius: 3px;
display: inline-block;
width: 16px;
height: 16px;
margin-right: 0.5em;
margin-top: 0.5em;
vertical-align: -2px;
}
/* Checked checkbox style (in this case the background is red) */
input[type="checkbox"]:checked+span:before {
/* NOTE: Replace the url with a path to an SVG of a checkmark to get a checkmark icon */
background-image: url('https://cdnjs.cloudflare.com/ajax/libs/ionicons/4.5.6/collection/build/ionicons/svg/ios-checkmark.svg');
background-repeat: no-repeat;
background-position: center;
/* The size of the checkmark icon, you may/may not need this */
background-size: 25px;
border-radius: 2px;
background-color: #e7ffba;
color: white;
}
/* Adding a dotted border around the active tabbed-into checkbox */
input[type="checkbox"]:focus+span:before,
input[type="checkbox"]:not(:disabled)+span:hover:before {
/* Visible in the full-color space */
box-shadow: 0px 0px 0px 2px rgba(0, 150, 255, 1);
/* Visible in Windows high-contrast themes
box-shadow will be hidden in these modes and
transparency will not be hidden in high-contrast
thus box-shadow will not show but the outline will
providing accessibility */
outline-color: transparent; /*switch to transparent*/
outline-width: 2px;
outline-style: dotted;
}
/* Disabled checkbox styles */
input[type="checkbox"]:disabled+span {
cursor: default;
color: black;
opacity: 0.5;
}
/* Styles specific to this fiddle that you do not need */
body {
padding: 1em;
}
h1 {
font-size: 18px;
}
<h1>
NOTE: Replace the url for the background-image in CSS with a path to an SVG in your solution or CDN. This one was found from a quick google search for a checkmark icon cdn
</h1>
<label>
<input type="checkbox">
<span>Try using tab and space</span>
</label>
<br>
<label>
<input type="checkbox" checked disabled>
<span>Disabled Checked Checkbox</span>
</label>
<br>
<label>
<input type="checkbox" disabled>
<span>Disabled Checkbox</span>
</label>
<br>
<label>
<input type="checkbox">
<span>Normal Checkbox</span>
</label>
<br>
<label>
<input type="checkbox">
<span>Another Normal Checkbox</span>
</label>
다음은 jQuery 또는 JavaScript 코드가없는 간단한 CSS 솔루션입니다.
FontAwseome 아이콘을 사용하고 있지만 모든 이미지를 사용할 수 있습니다
input[type=checkbox] {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
visibility: hidden;
font-size: 14px;
}
input[type=checkbox]:before {
content: @fa-var-square-o;
visibility: visible;
/*font-size: 12px;*/
}
input[type=checkbox]:checked:before {
content: @fa-var-check-square-o;
}
label
또는 span
요소를 만들 필요가 없습니다 . 그냥 작동합니다!
내 인터넷 검색에서 확인란 스타일을 만드는 가장 쉬운 방법입니다. 그냥 추가 :after
및 :checked:after
CSS 당신의 디자인을 기반으로.
body{
background: #DDD;
}
span{
margin-left: 30px;
}
input[type=checkbox] {
cursor: pointer;
font-size: 17px;
visibility: hidden;
position: absolute;
top: 0;
left: 0;
transform: scale(1.5);
}
input[type=checkbox]:after {
content: " ";
background-color: #fff;
display: inline-block;
color: #00BFF0;
width: 14px;
height: 19px;
visibility: visible;
border: 1px solid #FFF;
padding: 0 3px;
margin: 2px 0;
border-radius: 8px;
box-shadow: 0 0 15px 0 rgba(0,0,0,0.08), 0 0 2px 0 rgba(0,0,0,0.16);
}
input[type=checkbox]:checked:after {
content: "\2714";
display: unset;
font-weight: bold;
}
<input type="checkbox"> <span>Select Text</span>
일반 CSS3로 확인란 스타일을 수정하십시오. JS 및 HTML 조작이 필요하지 않습니다.
.form input[type="checkbox"]:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
content: "\f096";
opacity: 1 !important;
margin-top: -25px;
appearance: none;
background: #fff;
}
.form input[type="checkbox"]:checked:before {
content: "\f046";
}
.form input[type="checkbox"] {
font-size: 22px;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<form class="form">
<input type="checkbox" />
</form>
간단하고 가벼운 템플릿 :
input[type=checkbox] {
cursor: pointer;
}
input[type=checkbox]:checked:before {
content: "\2713";
background: #fffed5;
text-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
font-size: 20px;
text-align: center;
line-height: 8px;
display: inline-block;
width: 13px;
height: 15px;
color: #00904f;
border: 1px solid #cdcdcd;
border-radius: 4px;
margin: -3px -3px;
text-indent: 1px;
}
input[type=checkbox]:before {
content: "\202A";
background: #ffffff;
text-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
font-size: 20px;
text-align: center;
line-height: 8px;
display: inline-block;
width: 13px;
height: 15px;
color: #00904f;
border: 1px solid #cdcdcd;
border-radius: 4px;
margin: -3px -3px;
text-indent: 1px;
}
<input type="checkbox" checked="checked">checked1<br>
<input type="checkbox">unchecked2<br>
<input type="checkbox" checked="checked" id="id1">
<label for="id1">checked2+label</label><br>
<label for="id2">unchecked2+label+rtl</label>
<input type="checkbox" id="id2">
<br>
input
는 Chrome에서만 지원되며 모든 브라우저에서 코드가 동일하게 작동하지는 않습니다.
가장 쉬운 방법은 스타일을 지정 label
하고 checkbox
보이지 않게 만드는 것입니다.
HTML
<input type="checkbox" id="first" />
<label for="first"> </label>
CSS
checkbox {
display: none;
}
checkbox + label {
/* Style for checkbox normal */
width: 16px;
height: 16px;
}
checkbox::checked + label,
label.checked {
/* Style for checkbox checked */
}
은 ( checkbox
는) 숨겨져 있어도 액세스 할 수 있으며 양식을 제출하면 값이 전송됩니다. 오래된 브라우저의 당신은의 클래스를 변경해야 할 수도 있습니다 label
내가 인터넷 익스플로러의 이전 버전을 이해 생각하지 않기 때문에 자바 스크립트를 사용하여 확인하기 위해 ::checked
온 checkbox
.
::checked
잘못되었습니다 :checked
. (b) checkbox
잘못 되었음 — [type=checkbox]
이케! 이 모든 해결 방법으로 인해 HTML 확인란의 스타일을 지정하려는 경우 짜증납니다.
미리, 이것은 CSS 구현이 아닙니다. 다른 사람이 유용하다고 생각하는 경우에 대비하여 해결 방법을 공유하겠다고 생각했습니다.
HTML5 canvas
요소를 사용했습니다 .
이것의 단점은 외부 이미지를 사용할 필요가 없으며 대역폭을 절약 할 수 있다는 것입니다.
단점은 어떤 이유로 브라우저가 올바르게 렌더링 할 수 없다면 대체가 없다는 것입니다. 이것이 2017 년에도 여전히 문제가되는지 여부는 논쟁의 여지가 있습니다.
이전 코드가 매우 추악하다는 것을 알았으므로 다시 작성하기로 결정했습니다.
Object.prototype.create = function(args){
var retobj = Object.create(this);
retobj.constructor(args || null);
return retobj;
}
var Checkbox = Object.seal({
width: 0,
height: 0,
state: 0,
document: null,
parent: null,
canvas: null,
ctx: null,
/*
* args:
* name default desc.
*
* width 15 width
* height 15 height
* document window.document explicit document reference
* target this.document.body target element to insert checkbox into
*/
constructor: function(args){
if(args === null)
args = {};
this.width = args.width || 15;
this.height = args.height || 15;
this.document = args.document || window.document;
this.parent = args.target || this.document.body;
this.canvas = this.document.createElement("canvas");
this.ctx = this.canvas.getContext('2d');
this.canvas.width = this.width;
this.canvas.height = this.height;
this.canvas.addEventListener("click", this.ev_click(this), false);
this.parent.appendChild(this.canvas);
this.draw();
},
ev_click: function(self){
return function(unused){
self.state = !self.state;
self.draw();
}
},
draw_rect: function(color, offset){
this.ctx.fillStyle = color;
this.ctx.fillRect(offset, offset,
this.width - offset * 2, this.height - offset * 2);
},
draw: function(){
this.draw_rect("#CCCCCC", 0);
this.draw_rect("#FFFFFF", 1);
if(this.is_checked())
this.draw_rect("#000000", 2);
},
is_checked: function(){
return !!this.state;
}
});
작동하는 데모 는 다음과 같습니다 .
새 버전은 프로토 타입과 차등 상속을 사용하여 확인란을 만들기위한 효율적인 시스템을 만듭니다. 확인란을 만들려면
var my_checkbox = Checkbox.create();
그러면 즉시 확인란을 DOM에 추가하고 이벤트를 연결합니다. 확인란이 선택되어 있는지 확인하려면 :
my_checkbox.is_checked(); // True if checked, else false
또한 루프를 제거했습니다.
마지막 업데이트에서 언급하지 않은 것은 캔버스를 사용하면 원하는 것처럼 보이는 확인란을 만드는 것보다 더 많은 이점이 있다는 것입니다. 원하는 경우 다중 상태 확인란을 만들 수도 있습니다 .
Object.prototype.create = function(args){
var retobj = Object.create(this);
retobj.constructor(args || null);
return retobj;
}
Object.prototype.extend = function(newobj){
var oldobj = Object.create(this);
for(prop in newobj)
oldobj[prop] = newobj[prop];
return Object.seal(oldobj);
}
var Checkbox = Object.seal({
width: 0,
height: 0,
state: 0,
document: null,
parent: null,
canvas: null,
ctx: null,
/*
* args:
* name default desc.
*
* width 15 width
* height 15 height
* document window.document explicit document reference
* target this.document.body target element to insert checkbox into
*/
constructor: function(args){
if(args === null)
args = {};
this.width = args.width || 15;
this.height = args.height || 15;
this.document = args.document || window.document;
this.parent = args.target || this.document.body;
this.canvas = this.document.createElement("canvas");
this.ctx = this.canvas.getContext('2d');
this.canvas.width = this.width;
this.canvas.height = this.height;
this.canvas.addEventListener("click", this.ev_click(this), false);
this.parent.appendChild(this.canvas);
this.draw();
},
ev_click: function(self){
return function(unused){
self.state = !self.state;
self.draw();
}
},
draw_rect: function(color, offsetx, offsety){
this.ctx.fillStyle = color;
this.ctx.fillRect(offsetx, offsety,
this.width - offsetx * 2, this.height - offsety * 2);
},
draw: function(){
this.draw_rect("#CCCCCC", 0, 0);
this.draw_rect("#FFFFFF", 1, 1);
this.draw_state();
},
draw_state: function(){
if(this.is_checked())
this.draw_rect("#000000", 2, 2);
},
is_checked: function(){
return this.state == 1;
}
});
var Checkbox3 = Checkbox.extend({
ev_click: function(self){
return function(unused){
self.state = (self.state + 1) % 3;
self.draw();
}
},
draw_state: function(){
if(this.is_checked())
this.draw_rect("#000000", 2, 2);
if(this.is_partial())
this.draw_rect("#000000", 2, (this.height - 2) / 2);
},
is_partial: function(){
return this.state == 2;
}
});
Checkbox
마지막 스 니펫에서 사용 된 부분을 좀 더 일반적으로 수정하여 3 가지 상태의 확인란으로 "확장"할 수있었습니다. 여기 데모가 있습니다. 보시다시피 이미 내장 확인란보다 더 많은 기능이 있습니다.
JavaScript와 CSS 중에서 선택할 때 고려해야 할 사항.
먼저 캔버스를 설정하십시오
var canvas = document.createElement('canvas'),
ctx = canvas.getContext('2d'),
checked = 0; // The state of the checkbox
canvas.width = canvas.height = 15; // Set the width and height of the canvas
document.body.appendChild(canvas);
document.body.appendChild(document.createTextNode(' Togglable Option'));
다음으로 캔버스 자체를 업데이트하는 방법을 고안하십시오.
(function loop(){
// Draws a border
ctx.fillStyle = '#ccc';
ctx.fillRect(0,0,15,15);
ctx.fillStyle = '#fff';
ctx.fillRect(1, 1, 13, 13);
// Fills in canvas if checked
if(checked){
ctx.fillStyle = '#000';
ctx.fillRect(2, 2, 11, 11);
}
setTimeout(loop, 1000/10); // Refresh 10 times per second
})();
마지막 부분은 대화식으로 만드는 것입니다. 다행히도 매우 간단합니다.
canvas.onclick = function(){
checked = !checked;
}
JavaScript에서 이상한 이벤트 처리 모델로 인해 IE에서 문제가 발생할 수 있습니다.
나는 이것이 누군가를 돕기를 바랍니다. 그것은 내 요구에 꼭 맞았습니다.
unchecked (e.g. unchecked -> checked -> "kinda" checked -> unchecked
상태는 "명시 적 거짓", "명시 적 참", "기본값 사용"등을 나타낼 수 있음) 답변에 예를 추가하는 것을 고려하고 있습니다.
가장 간단한 방법이며이 스타일을 지정할 확인란을 선택할 수 있습니다.
CSS :
.check-box input {
display: none;
}
.check-box span:before {
content: ' ';
width: 20px;
height: 20px;
display: inline-block;
background: url("unchecked.png");
}
.check-box input:checked + span:before {
background: url("checked.png");
}
HTML :
<label class="check-box">
<input type="checkbox">
<span>Check box Text</span>
</label>
JavaScript 또는 jQuery가 필요하지 않습니다 .
확인란 스타일을 간단하게 변경하십시오.
input[type="checkbox"] {
display: none;
border: none !important;
box-shadow: none !important;
}
input[type="checkbox"] + label span {
background: url(http://imgh.us/uncheck.png);
width: 49px;
height: 49px;
display: inline-block;
vertical-align: middle;
}
input[type="checkbox"]:checked + label span {
background: url(http://imgh.us/check_2.png);
width: 49px;
height: 49px;
vertical-align: middle;
}
<input type="checkbox" id="option" />
<label for="option"> <span></span> Click me </label>
다음은 CSS / HTML 전용 버전이며, jQuery 나 JavaScript가 전혀 필요하지 않습니다. 단순하고 깔끔한 HTML과 매우 간단하고 짧은 CSS입니다.
여기 JSFiddle이 있습니다
HTML은 다음과 같습니다.
<div id="myContainer">
<input type="checkbox" name="myCheckbox" id="myCheckbox_01_item" value="red" />
<label for="myCheckbox_01_item" class="box"></label>
<label for="myCheckbox_01_item" class="text">I accept the Terms of Use.</label>
</div>
여기 CSS가 있습니다
#myContainer {
outline: black dashed 1px;
width: 200px;
}
#myContainer input[type="checkbox"][name="myCheckbox"] {
display: none;
}
#myContainer input[type="checkbox"][name="myCheckbox"]:not(:checked) + label.box {
display: inline-block;
width: 25px;
height: 25px;
border: black solid 1px;
background: #FFF ;
margin: 5px 5px;
}
#myContainer input[type="checkbox"][name="myCheckbox"]:checked + label.box {
display: inline-block;
width: 25px;
height: 25px;
border: black solid 1px;
background: #F00;
margin: 5px 5px;
}
#myContainer input[type="checkbox"][name="myCheckbox"] + label + label.text {
font: normal 12px arial;
display: inline-block;
line-height: 27px;
vertical-align: top;
margin: 5px 0px;
}
개별 라디오 또는 확인란, 확인란 그룹 및 라디오 버튼 그룹을 갖도록 조정할 수 있습니다.
이 html / css를 사용하면 레이블을 클릭하여 캡처 할 수 있으므로 레이블 만 클릭해도 확인란이 선택 및 선택 해제됩니다.
이 유형의 확인란 / 라디오 버튼은 문제없이 모든 형태와 완벽하게 작동합니다. PHP, ASP.NET (.aspx), JavaServer Faces 및 ColdFusion을 사용하여 테스트되었습니다 .
**Custom checkbox with css** (WebKit browser solution only Chrome, Safari, Mobile browsers)
<input type="checkbox" id="cardAccptance" name="cardAccptance" value="Yes">
<label for="cardAccptance" class="bold"> Save Card for Future Use</label>
/* The checkbox-cu */
.checkbox-cu {
display: block;
position: relative;
padding-left: 35px;
margin-bottom: 0;
cursor: pointer;
font-size: 16px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Hide the browser's default checkbox-cu */
.checkbox-cu input {
position: absolute;
opacity: 0;
cursor: pointer;
height: 0;
width: 0;
}
/* Create a custom checkbox-cu */
.checkmark {
position: absolute;
top: 4px;
left: 0;
height: 20px;
width: 20px;
background-color: #eee;
border: 1px solid #999;
border-radius: 0;
box-shadow: none;
}
/* On mouse-over, add a grey background color */
.checkbox-cu:hover input~.checkmark {
background-color: #ccc;
}
/* When the checkbox-cu is checked, add a blue background */
.checkbox-cu input:checked~.checkmark {
background-color: transparent;
}
/* Create the checkmark/indicator (hidden when not checked) */
.checkmark:after {
content: "";
position: absolute;
display: none;
}
/* Show the checkmark when checked */
.checkbox-cu input:checked~.checkmark:after {
display: block;
}
/* Style the checkmark/indicator */
.checkbox-cu .checkmark::after {
left: 7px;
top: 3px;
width: 6px;
height: 9px;
border: solid #28a745;
border-width: 0 2px 2px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
z-index: 100;
}
input[type=checkbox].css-checkbox {
position: absolute;
overflow: hidden;
clip: rect(0 0 0 0);
height: 1px;
width: 1px;
margin: -1px;
padding: 0;
border: 0;
}
input[type=checkbox].css-checkbox + label.css-label {
padding-left: 20px;
height: 15px;
display: inline-block;
line-height: 15px;
background-repeat: no-repeat;
background-position: 0 0;
font-size: 15px;
vertical-align: middle;
cursor: pointer;
}
input[type=checkbox].css-checkbox:checked + label.css-label {
background-position: 0 -15px;
}
.css-label{
background-image:url(http://csscheckbox.com/checkboxes/dark-check-green.png);
}
아니요, 여전히 확인란 자체의 스타일을 지정할 수는 없지만 확인란 을 클릭하는 기능 을 유지하면서 환상의 스타일을 지정하는 방법을 알아 냈습니다 . 텍스트를 선택하거나 드래그 앤 드롭을 트리거하지 않고 커서가 여전히 완벽하지 않은 경우에도 전환 할 수 있습니다!
이 솔루션은 아마도 라디오 버튼에도 적합합니다.
다음은 Internet Explorer 9, Firefox 30.0 및 Chrome 40.0.2214.91에서 작동하며 기본 예제 일뿐입니다. 여전히 배경 이미지 및 유사 요소와 함께 사용할 수 있습니다.
http://jsfiddle.net/o0xo13yL/1/
label {
display: inline-block;
position: relative; /* Needed for checkbox absolute positioning */
background-color: #eee;
padding: .5rem;
border: 1px solid #000;
border-radius: .375rem;
font-family: "Courier New";
font-size: 1rem;
line-height: 1rem;
}
label > input[type="checkbox"] {
display: block;
position: absolute; /* Remove it from the flow */
width: 100%;
height: 100%;
margin: -.5rem; /* Negative the padding of label to cover the "button" */
cursor: pointer;
opacity: 0; /* Make it transparent */
z-index: 666; /* Place it on top of everything else */
}
label > input[type="checkbox"] + span {
display: inline-block;
width: 1rem;
height: 1rem;
border: 1px solid #000;
margin-right: .5rem;
}
label > input[type="checkbox"]:checked + span {
background-color: #666;
}
<label>
<input type="checkbox" />
<span> </span>Label text
</label>
Edge 및 Firefox와 같은 브라우저는 확인란 입력 태그에서 : before : after를 지원하지 않으므로 HTML 및 CSS를 사용하는 대안이 있습니다. 물론 요구 사항에 따라 CSS를 편집해야합니다.
확인란의 HTML을 다음과 같이 만드십시오.
<div class='custom-checkbox'>
<input type='checkbox' />
<label>
<span></span>
Checkbox label
</label>
</div>
확인란에이 스타일을 적용하여 색상 레이블을 변경하십시오.
<style>
.custom-checkbox {
position: relative;
}
.custom-checkbox input{
position: absolute;
left: 0;
top: 0;
height:15px;
width: 50px; /* Expand the checkbox so that it covers */
z-index : 1; /* the label and span, increase z-index to bring it over */
opacity: 0; /* the label and set opacity to 0 to hide it. */
}
.custom-checkbox input+label {
position: relative;
left: 0;
top: 0;
padding-left: 25px;
color: black;
}
.custom-checkbox input+label span {
position: absolute; /* a small box to display as checkbox */
left: 0;
top: 0;
height: 15px;
width: 15px;
border-radius: 2px;
border: 1px solid black;
background-color: white;
}
.custom-checkbox input:checked+label { /* change label color when checked */
color: orange;
}
.custom-checkbox input:checked+label span{ /* change span box color when checked */
background-color: orange;
border: 1px solid orange;
}
</style>
SCSS를 사용하거나 SASS로 쉽게 변환하는 사용자에게는 다음이 도움이 될 것입니다. 효과적으로, 체크 박스 옆에 요소를 만들면 스타일을 지정할 것입니다. 확인란을 클릭하면 CSS가 자매 요소의 스타일을 새롭고 체크 된 스타일로 다시 스타일링합니다. 코드는 다음과 같습니다.
label.checkbox {
input[type="checkbox"] {
visibility: hidden;
display: block;
height: 0;
width: 0;
position: absolute;
overflow: hidden;
&:checked + span {
background: $accent;
}
}
span {
cursor: pointer;
height: 15px;
width: 15px;
border: 1px solid $accent;
border-radius: 2px;
display: inline-block;
transition: all 0.2s $interpol;
}
}
<label class="checkbox">
<input type="checkbox" />
<span></span>
Label text
</label>