Input gaya kotak centang CSS

178

Gaya apa pun untuk inputmemengaruhi setiap elemen input. Apakah ada cara untuk menentukan gaya yang diterapkan hanya untuk kotak centang tanpa menerapkan kelas untuk setiap elemen kotak centang?

Leigh
sumber

Jawaban:

312

Dengan CSS 2 Anda dapat melakukan ini:

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

Ini seharusnya cukup banyak didukung sekarang. Lihat dukungan untuk browser

Andrew Hare
sumber
18
Saya percaya IE 7 dan penyeleksi atribut dukungan yang lebih besar, yang sebenarnya adalah CSS 2.1. quirksmode.org/css/contents.html
TJ L
2
@ realtebo: Catat banyak gaya (batas, latar belakang, dll) tidak dapat diterapkan secara langsung ke kotak centang HTML.
Roy Tinker
1
@RoyTinker Anda akan menggunakan outline, bukan border, untuk kotak centang.
TylerH
29

Saya membuat solusi sendiri tanpa label

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">

Cenk YAGMUR
sumber
Bagaimana hubungannya dengan latar belakang abu-abu seperti pada gambar ini ( i.stack.imgur.com/Q23fy.png ), jika Anda dapat melihat posting saya ( pt.stackoverflow.com/questions/436890/estilizar-checkbox ). Terima kasih.
Tiago
Fantastis! Dapatkah Anda memasukkan jawaban di pos saya untuk saya tandai sebagai selesai?
Tiago
1
Setelah berjam-jam mencari dan menguji ini adalah satu-satunya hal yang bekerja untuk saya. Terima kasih!
Tandai
1
Contoh
Adrian Grygutis
24

Sesuatu yang baru-baru ini saya temukan untuk menata Radio Buttons AND checkbox. Sebelumnya, saya harus menggunakan jQuery dan hal-hal lain. Tapi ini sangat sederhana.

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;
}

Anda dapat melakukan hal yang sama untuk kotak centang, jelas mengubah input[type=radio]to input[type=checkbox]dan ubah border-radius:15px;ke border-radius:4px;.

Semoga ini agak bermanfaat bagi Anda.

Leo_V117
sumber
Sangat bagus, terlalu buruk yang tidak bekerja terlalu banyak di Opera atau IE = (
Michel Ayres
1
Jika Anda ingin menerapkan gaya Anda sendiri ke kotak centang / input, checkout pos blog saya tentang elemen input khusus melalui CSS . Kemudian Anda bisa mendesainnya sesuai keinginan Anda hanya dengan CSS, termasuk fallback IE8.
Felix Hagspiel
8

Kelas juga berfungsi dengan baik, seperti:

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

<form>
  <input class="checkbox" type="checkbox" />
</form>
Jim Fell
sumber
Mungkin tidak perlu membuat sarang. Checkbox di dalam formulir karena Anda tidak akan menemukan kotak centang di luar formulir. Juga masukan .checkbox harus input.checkbox
Duncan Walker
@DuncanWalker Saya belum mengujinya, tetapi bukankah formtag diperlukan untuk mengikat kontrol input ke kontrol kirim default?
Jim Fell
1
@ Jim Fell ini tidak berfungsi. Jika saya membuat dua kelas berbeda untuk dua kotak centang gaya berbeda yaitu .checkbox1 [input = 'checkbox'] dan .checkbox2 [input = 'checkbox'], gaya selalu akan mempengaruhi keduanya terlepas .. bagaimana Anda memastikan stylings terpisah?
Krys
@Krys Anda perlu memberikan elemen kotak centang Anda nama kelas yang berbeda.
Jim Fell
4

Anda hanya dapat menerapkan atribut tertentu dengan melakukan:

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

Itu menjelaskannya di sini .

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

Tetapi ini hanya akan berfungsi untuk browser kecuali IE7 dan di bawahnya, bagi mereka Anda harus menggunakan kelas.

cdm9002
sumber
di bawah IE7 itu, IE7 itu sendiri baik-baik saja dengan penyeleksi. Diuji dan lihat di sini: kimblim.dk/css-tests/selectors
Frank Nocke
3

Trident menyediakan ::-ms-checkelemen pseudo untuk kotak centang dan kontrol tombol radio. Sebagai contoh:

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

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

Ini ditampilkan sebagai berikut di IE10 pada Windows 8:

masukkan deskripsi gambar di sini

Anselmus
sumber
2

Karena IE6 tidak mengerti selektor atribut, Anda dapat menggabungkan skrip yang hanya dilihat oleh IE6 (dengan komentar bersyarat) dan jQuery atau IE7.js oleh Dean Edwards.

IE7 (.js) adalah perpustakaan JavaScript untuk membuat Microsoft Internet Explorer berperilaku seperti browser yang sesuai standar. Ini memperbaiki banyak masalah HTML dan CSS dan membuat PNG transparan bekerja dengan benar di bawah IE5 dan IE6.

Pilihan menggunakan kelas atau jQuery atau IE7.js tergantung pada suka dan tidak suka Anda dan kebutuhan Anda yang lain (mungkin transparansi PNG-24 di seluruh situs Anda tanpa harus bergantung pada PNG-8 dengan transparansi lengkap yang mundur ke transparansi 1-bit pada IE6 - hanya dibuat oleh Fireworks dan pngnq, dll)

FelipeAls
sumber
1

Meskipun CSS memang menyediakan cara bagi Anda untuk melakukan gaya khusus untuk jenis kotak centang atau jenis lain, akan ada masalah dengan browser yang tidak mendukung ini.

Saya pikir satu-satunya pilihan Anda dalam hal ini adalah menerapkan kelas ke kotak centang Anda.

tambahkan saja class = "kotak centang" ke kotak centang Anda.

Kemudian buat gaya itu dalam kode css Anda.

Satu hal yang dapat Anda lakukan adalah ini:

main.css

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

ie.css

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

Kemudian gunakan css spesifik IE termasuk:

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

Anda masih perlu menambahkan kelas agar bisa berfungsi di IE, dan itu tidak akan bekerja di browser non-IE lain yang tidak mendukung IE. Tapi itu akan membuat situs web Anda berpikiran maju dengan kode css dan ketika IE mendapat dukungan, Anda akan dapat menghapus kode css tertentu dan juga kelas css dari kotak centang.

Brian
sumber
terima kasih atas tip tentang 2 style sheet. walaupun saya mencoba untuk menghindari hal semacam itu saya pikir saya hanya akan membuat gaya untuk kotak centang dan itu ...