Web sayfalarındaki onay kutuları - nasıl büyütülür?


115

Çoğu tarayıcıda oluşturulan standart onay kutuları oldukça küçüktür ve daha büyük bir yazı tipi kullanıldığında bile boyutları artmaz. Daha büyük onay kutularını görüntülemenin tarayıcıdan bağımsız en iyi yolu nedir?

Yanıtlar:


144

Bunun herhangi birine yardımcı olabileceği durumda, işte bir atlama noktası olarak basit CSS. Arka plan renginde geçişli başparmaklar için yeterince büyük temel yuvarlak bir kareye dönüştürür.

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


@GabrielW Bu doğru. Sadece diğerleri için eşdeğerini kullanın
taylorcressy

@taylorcressy IE (ayrıca IE 11) hariç caniuse.com/#search=Appearance - ancak diğer tarayıcılar için iyi çalıştı. Teşekkürler!
CodeBrauer

16
içeride de bir kene olsaydı iyi olurdu :)
robert king

@Paul: Paylaştığınız için teşekkürler. Onay işaretiyle nasıl başa çıktığını merak ediyordum. Arka plan sadece bir renge ayarlandığında, kutudaki beyaz onay işareti artık görünmez. Kolay bir çözüm var mı? Daha önce kontrol için bir html varlığı eklemeyi denedim, ancak bir alternatif olup olmadığını merak ediyorum
PBandJen

1
Kontrol edilen arka plan rengi için daha koyu bir renk kullandım ve "çek" olmadan o kadar da kötü değil
JR Lawhorne

47

Aslında onları büyütmenin bir yolu var, her şey gibi onay kutuları (facebook düğmesi gibi bir iframe bile).

Bunları "yakınlaştırılmış" bir öğeye sarın:

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

Biraz "yeniden ölçeklenmiş" görünebilir ama işe yarıyor.

Elbette bu div'i yüzer hale getirebilirsiniz: sola ve etiketinizi yanına koyun, float: sola da.


1
Firefox'ta (sürüm 36'dan itibaren) bunun çok bulanık bir görünüme neden olacağını unutmayın. Yine de, Chrome'da iyi ölçeklenir. Demo: jsfiddle.net/tzp858j3
Kat

ölçekli görünmeyen daha iyi bir çözüm yok mu?
basZero

3
Can zoom: 2ve transform: scale(2)doğrudan onay kutusunu uygulanabilir? Neden bir paketleyiciye ihtiyaç duyar?
Atav32

Teşekkürler! Görünüşe göre kodunuz daha fazla tarayıcıyı hesaba katıyor ve daha sonra test edebilirim, ancak denediğim her şeyde çalışıyor. Onay kutularının neredeyse noktalara dönüştüğü I-telefonumda özellikle güzel! BTW, bu pasajın "2" yi koyduğu yerlere ve orta boy bir onay kutusu için daha küçük kesirli ölçeklendirme (1.5 gibi) koyabilirsiniz.
Randy

26

Bu CSS'yi deneyin

input[type=checkbox] {width:100px; height:100px;}

2
Tamamen tarayıcılar arası değil (HTML'de bir sınıf ayarlamak ve CSS'de sınıf seçiciyi kullanmak daha iyidir), ancak bu benimkinden daha iyi bir çözüm olabilir. +1
Harmen

1
Örnek amaçlı genişlik ve yükseklik kullanıyordum. Muhtemelen Harmen ve benim çözümümün bir kombinasyonu, CSS'nin makul olarak sağlayabileceğinden daha fazla stile ihtiyacınız olabileceği için gitmenin yoludur.
Collin White

6
Bu sadece bazı tarayıcılarda çalışacak ve birçok modern tarayıcıda çalışmayacaktır.
RJ Owen

1
Bu, kullanıcıların tıklamasını kolaylaştırmak için onay kutularının genellikle daha büyük olması gereken ipad safaride çalışır.
user3032973

3
En büyük sınırlama, Firefox'ta (Firefox 36'dan itibaren) hiç çalışmaması ve aslında oldukça doğal görünmemesidir (onay kutusu normal boyuttadır ancak etrafındaki dolgu 100 x 100 piksel alanını doldurur.
Kat

5

Ben değiştirmeyi denedim paddingve marginve sıra widthile heightve sonra nihayet sadece ölçek artarsa bu ödeme şekli olduğu saptanmıştır:

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

1

İşte en son tarayıcılarda (IE9 +), IE8 ve altını desteklemek için javascript ile geliştirilebilen bir yalnızca CSS çözümü olarak çalışan bir numara.

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

labelOnay kutusunun nasıl görünmesini istediğinizle stilini belirleyin

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

JavaScript için, durumu göstermek için etikete sınıflar ekleyebileceksiniz. Ayrıca, aşağıdaki işlevi kullanmak akıllıca olacaktır:

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

#checkboxIDStilleri değiştirmek için DÜZENLE


Bu tekniğin tam kaynak koduna bir bağlantı için stackoverflow.com/a/3772914/190135'e bakın
AlexChaffee

1

Bir telefon aralığı uygulaması yazıyorum ve onay kutularının boyutu, görünümü vb. Değişiklik gösteriyor. Bu yüzden kendi basit onay kutumu yaptım:

Önce HTML kodu:

<span role="checkbox"/>

Ardından 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);
}

Onay kutusu durumunu değiştirmek için JQuery kullandım:

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

Ama onsuz da kolaylıkla yapılabilir ...

Umarım yardımcı olabilir!


1

Saf modern 2020 CSS , bulanık ölçeklendirme veya kullanışlı olmayan dönüştürme olmadan yalnızca karar. Ve kene ile! =)

Firefox ve Chromium tabanlı tarayıcılarda iyi çalışıyor.

Böylece, onay kutularınızı tamamen UYUMLU , sadece ana blokları ayarlayarak yönetebilirsiniz font-heightve metinle birlikte büyür!

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>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.