CSS 체크 박스 입력 스타일링


178

모든 스타일 input은 모든 입력 요소 에 영향 을 줍니다. 각 확인란 요소에 클래스를 적용하지 않고 확인란에만 적용 할 스타일을 지정하는 방법이 있습니까?

답변:


312

CSS 2를 사용하면 다음을 수행 할 수 있습니다.

input[type='checkbox'] { ... }

이것은 현재까지 광범위하게 지원되어야합니다. 브라우저 지원 참조


18
IE 7 이상은 실제로 CSS 2.1 인 속성 선택기를 지원한다고 생각합니다. quirksmode.org/css/contents.html
TJ L

2
@realtebo : 많은 스타일 (테두리, 배경 등)을 HTML 확인란에 직접 적용 할 수 없습니다.
Roy Tinker

1
@RoyTinker 확인란이 outline아닌 을 사용 border합니다.
TylerH

30

라벨이없는 자체 솔루션을 만듭니다.

input[type=checkbox] {
         position: relative;
	       cursor: pointer;
    }
    input[type=checkbox]:before {
         content: "";
         display: block;
         position: absolute;
         width: 16px;
         height: 16px;
         top: 0;
         left: 0;
         border: 2px solid #555555;
         border-radius: 3px;
         background-color: white;
}
    input[type=checkbox]:checked:after {
         content: "";
         display: block;
         width: 5px;
         height: 10px;
         border: solid black;
         border-width: 0 2px 2px 0;
         -webkit-transform: rotate(45deg);
         -ms-transform: rotate(45deg);
         transform: rotate(45deg);
         position: absolute;
         top: 2px;
         left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">

input[type=checkbox] {
         position: relative;
	       cursor: pointer;
    }
    input[type=checkbox]:before {
         content: "";
         display: block;
         position: absolute;
         width: 20px;
         height: 20px;
         top: 0;
         left: 0;
         background-color:#e9e9e9;
}
input[type=checkbox]:checked:before {
         content: "";
         display: block;
         position: absolute;
         width: 20px;
         height: 20px;
         top: 0;
         left: 0;
         background-color:#1E80EF;
}
    input[type=checkbox]:checked:after {
         content: "";
         display: block;
         width: 5px;
         height: 10px;
         border: solid white;
         border-width: 0 2px 2px 0;
         -webkit-transform: rotate(45deg);
         -ms-transform: rotate(45deg);
         transform: rotate(45deg);
         position: absolute;
         top: 2px;
         left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">


이 이미지와 같이 회색 배경으로 작업하는 방법 ( i.stack.imgur.com/Q23fy.png ), 당신은 내 게시물 (볼 수있는 경우 pt.stackoverflow.com/questions/436890/estilizar-checkbox ). 감사.
Tiago

환상적인! 내 게시물에 답변을 입력하여 완료로 표시 할 수 있습니까?
티아고

1
몇 시간 동안 검색하고 테스트 한 후에 이것이 나를 위해 일한 유일한 것입니다. 감사!
마크

1
멋진 예
Adrian Grygutis

24

최근 라디오 버튼 및 확인란의 스타일을 지정하기 위해 발견 한 것. 전에는 jQuery와 다른 것들을 사용해야했습니다. 그러나 이것은 바보처럼 간단합니다.

input[type=radio] {
    padding-left:5px;
    padding-right:5px;
    border-radius:15px;

    -webkit-appearance:button;

    border: double 2px #00F;

    background-color:#0b0095;
    color:#FFF;
    white-space: nowrap;
    overflow:hidden;

    width:15px;
    height:15px;
}

input[type=radio]:checked {
    background-color:#000;
    border-left-color:#06F;
    border-right-color:#06F;
}

input[type=radio]:hover {
    box-shadow:0px 0px 10px #1300ff;
}

당신은 분명히 변경, 체크 박스에 대해 동일한 작업을 수행 할 수 있습니다 input[type=radio]input[type=checkbox]변화 border-radius:15px;border-radius:4px; .

이것이 당신에게 다소 유용하기를 바랍니다.


Opera 나 IE에서 그다지 효과가없는 정말 좋고 나쁘다 = (
Michel Ayres

1
자체 스타일을 체크 박스 / 입력에 적용하려면 CSS를 통해 사용자 정의 입력 요소에 대한 내 블로그 게시물을 확인하십시오 . 그런 다음 IE8 대체를 포함하여 CSS로만 스타일을 지정할 수 있습니다.
Felix Hagspiel

8

수업은 다음과 같이 잘 작동합니다.

<style>
  form input .checkbox
  {
    /* your checkbox styling */
  }
</style>

<form>
  <input class="checkbox" type="checkbox" />
</form>

양식 외부에서 확인란을 찾을 가능성이 없으므로 .checkbox를 양식 안에 중첩시킬 필요는 없습니다. 또한 입력 .checkbox도 입력해야합니다. checkbox
Duncan Walker

@DuncanWalker 테스트하지 않았지만 form입력 컨트롤을 기본 제출 컨트롤에 묶는 데 태그가 필요 하지 않습니까?
Jim Fell

1
@ Jim Fell이 작동하지 않습니다. .checkbox1 [input = 'checkbox'] 및 .checkbox2 [input = 'checkbox']와 같이 두 가지 다른 스타일의 확인란에 대해 두 개의 서로 다른 클래스를 만들면 스타일은 항상 두 가지 모두에 영향을 미칩니다.
Krys

@Krys 확인란 요소에 다른 클래스 이름을 지정해야합니다.
Jim Fell

4

다음을 수행하여 특정 속성에만 적용 할 수 있습니다.

input[type="checkbox"] {...}

여기에 설명되어 있습니다 .


4
input[type="checkbox"] {
 /* your style */
}

그러나 이것은 IE7 이하를 제외한 브라우저에서만 작동하며 클래스를 사용해야하는 브라우저에서는 작동합니다.


IE7 이하 에서는 IE7 자체가 선택기에 문제가 없습니다. 테스트 및 여기 참조 : kimblim.dk/css-tests/selectors
Frank Nocke

3

Trident::-ms-check확인란 및 라디오 버튼 컨트롤을위한 유사 요소를 제공합니다 . 예를 들면 다음과 같습니다.

<input type="checkbox">
<input type="radio">

::-ms-check {
    color: red;
    background: black;
    padding: 1em;
}

이것은 Windows 8의 IE10에서 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오


2

IE6는 속성 선택자를 이해하지 못하므로 IE6에서만 볼 수있는 스크립트 (조건부 주석 포함)와 Dean Edwards의 jQuery 또는 IE7.js 를 결합 할 수 있습니다 .

IE7 (.js)은 Microsoft Internet Explorer가 표준 호환 브라우저처럼 작동하도록하는 JavaScript 라이브러리입니다. 많은 HTML 및 CSS 문제를 해결하고 IE5 및 IE6에서 투명 PNG가 올바르게 작동합니다.

클래스 또는 jQuery 또는 IE7.js 사용의 선택은 좋아하는 것과 싫어하는 것 및 다른 요구에 달려 있습니다 (IE6의 1 비트 투명도로 폴백하는 완전한 투명도로 PNG-8에 의존하지 않고 사이트 전체의 PNG-24 투명도) -Fireworks 및 pngnq 등에서 만 생성)


1

CSS는 확인란 유형 또는 다른 유형에 특정한 스타일을 수행하는 방법을 제공하지만이를 지원하지 않는 브라우저에는 문제가 있습니다.

이 경우 귀하의 유일한 옵션은 체크 박스에 수업을 적용하는 것입니다.

class = "checkbox"를 체크 박스에 추가하십시오.

그런 다음 CSS 코드에서 해당 스타일을 만듭니다.

당신이 할 수있는 한 가지는 :

main.css

input[type="checkbox"] { /* css code here */ }

ie.css

.checkbox{ /* css code here for ie */ }

그런 다음 IE 특정 CSS를 사용하십시오.

<!--[if lt IE 7]>
   <link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->

IE에서 작동하려면 클래스를 추가해야하며 IE를 지원하지 않는 다른 비 IE 브라우저에서는 작동하지 않습니다. 그러나 그것은 CSS 코드로 웹 사이트를 앞으로 생각하게 만들고 IE는 지원을 받으면 확인란에서 특정 CSS 코드와 CSS 클래스를 제거 할 수 있습니다.


2 스타일 시트에 대한 팁을 주셔서 감사합니다. 나는 그런 종류의 것을 피하려고 노력하지만 난 그냥 체크 박스에 대한 스타일을 만들 것이라고 생각하고 그게 ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.