Kotak centang di halaman web - bagaimana cara membuatnya lebih besar?

114

Kotak centang standar yang ditampilkan di sebagian besar browser cukup kecil dan ukurannya tidak bertambah bahkan saat font yang lebih besar digunakan. Apa cara terbaik dan tidak tergantung browser untuk menampilkan kotak centang yang lebih besar?

Tony the Pony
sumber

Jawaban:

144

Jika ini dapat membantu siapa pun, berikut CSS sederhana sebagai titik awal. Mengubahnya menjadi persegi bundar dasar yang cukup besar untuk ibu jari dengan warna latar belakang yang berubah-ubah.

input[type='checkbox'] {
    -webkit-appearance:none;
    width:30px;
    height:30px;
    background:white;
    border-radius:5px;
    border:2px solid #555;
}
input[type='checkbox']:checked {
    background: #abd;
}
<input type="checkbox" />

Paul
sumber
@Gabriel Itu benar. Cukup gunakan yang setara untuk yang lain
taylorcressy
@taylorcressy Kecuali untuk IE (juga IE 11) caniuse.com/#search=Appearance - tetapi berfungsi dengan baik untuk browser lain. Terima kasih!
CodeBrauer
16
akan menyenangkan jika ada tanda centang di dalamnya juga :)
robert king
@Paul: Terima kasih telah berbagi. Saya bertanya-tanya bagaimana Anda menangani tanda centang yang muncul. Dengan latar belakang yang disetel ke warna, tanda centang putih di kotak tidak lagi terlihat. Apakah ada solusi yang mudah? Saya sudah mencoba menambahkan entitas html untuk check in a: before, tetapi bertanya-tanya apakah ada alternatif
PBandJen
1
Saya menggunakan warna yang lebih gelap untuk warna latar belakang yang dicentang dan tidak terlalu buruk tanpa "tanda centang"
JR Lawhorne
47

Sebenarnya ada cara untuk membuatnya lebih besar, centang kotak seperti yang lain (bahkan iframe seperti tombol facebook).

Gabungkan mereka dalam elemen "diperbesar":

.double {
  zoom: 2;
  transform: scale(2);
  -ms-transform: scale(2);
  -webkit-transform: scale(2);
  -o-transform: scale(2);
  -moz-transform: scale(2);
  transform-origin: 0 0;
  -ms-transform-origin: 0 0;
  -webkit-transform-origin: 0 0;
  -o-transform-origin: 0 0;
  -moz-transform-origin: 0 0;
}
<div class="double">
  <input type="checkbox" name="hello" value="1">
</div>

Ini mungkin terlihat sedikit "diubah ukurannya" tetapi berhasil.

Tentu saja Anda dapat membuat div float: left dan meletakkan label Anda di sampingnya, float: left juga.

FlorianB
sumber
1
Perhatikan bahwa di Firefox (mulai versi 36), ini akan menghasilkan tampilan yang sangat kabur. Ini berskala dengan baik di Chrome. Demo: jsfiddle.net/tzp858j3
Kat
apakah tidak ada solusi yang lebih baik yang TIDAK terlihat berskala?
basZero
3
Tidak bisa zoom: 2 dan transform: scale(2)langsung diterapkan ke kotak centang? Mengapa ini membutuhkan pembungkus?
Atav32
Terima kasih! Sepertinya kode Anda memperhitungkan lebih banyak browser daripada yang dapat saya uji, tetapi berfungsi pada semua yang telah saya coba. Terutama bagus di I-phone saya, di mana kotak centang menjadi titik! BTW, Anda dapat menempatkan skala pecahan yang lebih kecil (seperti 1,5) di tempat snipet ini menempatkan "2", dan untuk kotak centang ukuran sedang.
Randy
26

Coba CSS ini

input[type=checkbox] {width:100px; height:100px;}
Collin White
sumber
2
Tidak sepenuhnya lintas-browser (lebih baik menetapkan kelas dalam HTML dan menggunakan pemilih kelas dalam CSS), tetapi ini mungkin solusi yang lebih baik daripada saya. +1
Harmen
1
Saya menggunakan lebar dan tinggi untuk tujuan contoh. Mungkin kombinasi Harmen dan solusi saya adalah cara yang harus dilakukan karena Anda mungkin memerlukan lebih banyak gaya daripada yang dapat disediakan CSS secara wajar.
Collin White
6
Ini hanya akan berfungsi di beberapa browser, dan tidak di banyak browser modern.
RJ Owen
1
Ini berfungsi pada safari ipad di mana kotak centang sering kali harus lebih besar agar lebih mudah bagi pengguna untuk mengklik.
pengguna3032973
3
Batasan utama adalah bahwa itu tidak berfungsi sama sekali di Firefox (pada Firefox 36) dan sebenarnya akan terlihat sangat tidak wajar (kotak centang berukuran biasa tetapi bantalan di sekitarnya mengisi area 100 x 100px.
Kat
5

Saya mencoba mengubah paddingdan margindan serta widthdan height, dan akhirnya menemukan bahwa jika Anda meningkatkan skala, itu akan berhasil:

input[type=checkbox] {
    transform: scale(1.5);
}
Justin
sumber
1

Berikut adalah trik yang berfungsi di browser terbaru (IE9 +) sebagai solusi khusus CSS yang dapat ditingkatkan dengan javascript untuk mendukung IE8 dan di bawahnya.

<div>
  <input type="checkbox" id="checkboxID" name="checkboxName" value="whatever" />
  <label for="checkboxID"> </label>
</div>

Atur gaya labeldengan tampilan kotak centang yang Anda inginkan

#checkboxID
{
  position: absolute fixed;
  margin-right: 2000px;
  right: 100%;
}
#checkboxID + label
{
  /* unchecked state */
}
#checkboxID:checked + label
{
  /* checked state */
}

Untuk javascript, Anda dapat menambahkan kelas ke label untuk menunjukkan status. Selain itu, sebaiknya gunakan fungsi berikut:

$('label[for]').live('click', function(e){
  $('#' + $(this).attr('for') ).click();
  return false;
});

EDIT untuk mengubah #checkboxIDgaya

zzzzBov
sumber
lihat stackoverflow.com/a/3772914/190135 untuk tautan ke kode sumber lengkap untuk teknik ini
AlexChaffee
1

Saya menulis aplikasi phonegap, dan kotak centang bervariasi dalam ukuran, tampilan, dll. Jadi saya membuat kotak centang sederhana saya sendiri:

Pertama kode HTML:

<span role="checkbox"/>

Kemudian CSS:

[role=checkbox]{
    background-image: url(../img/checkbox_nc.png);
    height: 15px;
    width: 15px;
    display: inline-block;
    margin: 0 5px 0 5px;
    cursor: pointer;
}

.checked[role=checkbox]{
    background-image: url(../img/checkbox_c.png);
}

Untuk mengaktifkan status kotak centang, saya menggunakan JQuery:

CLICKEVENT='touchend';
function createCheckboxes()
{
    $('[role=checkbox]').bind(CLICKEVENT,function()
    {
        $(this).toggleClass('checked');
    });
}

Tetapi itu dapat dengan mudah dilakukan tanpa itu ...

Semoga bisa membantu!

wesamot.dll
sumber
1

Hanya CSS 2020 modern murniKeputusan , tanpa penskalaan kabur atau transformasi yang tidak berguna. Dan dengan centang! =)

Berfungsi bagus di browser berbasis Firefox dan Chromium.

Jadi, Anda dapat mengatur kotak centang Anda sepenuhnya ADAPTIF , hanya dengan menyetel blok induk font-heightdan itu akan berkembang dengan teks!

input[type='checkbox'] {
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  vertical-align: middle;
  outline: none;
  font-size: inherit;
  cursor: pointer;
  width: 1.0em;
  height: 1.0em;
  background: white;
  border-radius: 0.25em;
  border: 0.125em solid #555;
  position: relative;
}

input[type='checkbox']:checked {
  background: #adf;
}

input[type='checkbox']:checked:after {
  content: "✔";
  position: absolute;
  font-size: 90%;
  left: 0.0625em;
  top: -0.25em;
}
<label for="check1"><input type="checkbox" id="check1" checked="checked" /> checkbox one</label>
<label for="check2"><input type="checkbox" id="check2" /> another checkbox</label>

FlameStorm
sumber