CSS onay kutusu giriş stili


178

Herhangi bir stil, inputher girdi öğesini etkiler. Her onay kutusu öğesine bir sınıf uygulamadan yalnızca onay kutularına uygulanacak stili belirtmenin bir yolu var mı?

Yanıtlar:


312

CSS 2 ile şunları yapabilirsiniz:

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

Bu şimdiye kadar oldukça yaygın bir şekilde desteklenmelidir. Tarayıcı desteğine bakın


18
Aslında CSS 2.1 olan IE 7 ve daha büyük destek özellik seçicilerine inanıyorum. quirksmode.org/css/contents.html
TJ L

2
@realtebo: Birçok stilin (kenarlık, arka plan vb.) doğrudan HTML onay kutularına uygulanamayacağını unutmayın.
Roy Tinker

1
@RoyTinker Sen kullanırsınız outlinedeğil, borderişaret kutusu.
TylerH

30

Etiketsiz kendi çözümümü yaratıyorum

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


Yazıma bakabiliyorsanız ( pt.stackoverflow.com/questions/436890/estilizar-checkbox ), bu resimde olduğu gibi gri arka planla nasıl yapılır ( i.stack.imgur.com/Q23fy.png ). Teşekkürler.
Tiago

Fantastik! Tamam olarak işaretlemem için cevabı gönderime koyabilir misiniz?
Tiago

1
Saatler süren arama ve testlerden sonra bu benim için işe yarayan tek şeydi. Teşekkürler!
Mark,

1
Harika örnekler
Adrian Grygutis

24

Son zamanlarda Radyo Düğmeleri VE Onay Kutularını şekillendirmek için keşfettiğim bir şey. Daha önce, jQuery ve diğer şeyleri kullanmak zorunda kaldım. Ama bu çok basit.

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

Anlaşılan, bir onay kutusu için aynı şeyi değiştirebilir input[type=radio]için input[type=checkbox]ve değişim border-radius:15px;için border-radius:4px;.

Umarım bu sizin için biraz yararlıdır.


Opera'da ne de IE'de çok fazla çalışmayan gerçekten iyi, çok kötü = (
Michel Ayres

1
Kendi stilinizi bir onay kutusuna / girişe uygulamak istiyorsanız, CSS yoluyla özel giriş öğeleri hakkındaki blog yazıma göz atın . Daha sonra, IE8 yedeklemesi de dahil olmak üzere yalnızca CSS ile istediğiniz gibi biçimlendirebilirsiniz.
Felix Hagspiel

8

Sınıflar da iyi çalışır, örneğin:

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

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

Muhtemelen .checkbox'ı formun içine yerleştirmek gerekli değildir, çünkü formun dışında bir onay kutusu bulamazsınız. Ayrıca .checkbox girişi de girilmelidir. Checkbox
Duncan Walker

@DuncanWalker Test etmedim, ancak formgiriş denetimini varsayılan gönderme denetimine bağlamak için etiketler gerekli değil mi?
Jim Fell

1
@Jim Fell bu işe yaramıyor. İki farklı stilli onay kutusu için iki farklı sınıf oluşturursam, yani .checkbox1 [input = 'checkbox'] ve .checkbox2 [input = 'checkbox'], stiller her zaman ne olursa olsun her ikisini de etkiler… stillerin ayrı olmasını nasıl sağlıyorsunuz?
Krys

@Krys Onay kutusu öğelerinize farklı sınıf adları vermeniz gerekir.
Jim Fell

4

Aşağıdakileri yaparak yalnızca belirli özelliklere başvurabilirsiniz:

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

Bunu açıklar burada .


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

Ancak bu yalnızca IE7 ve altı dışındaki tarayıcılarda işe yarar, bir sınıf kullanmanız gerekenler için.


IE7'nin altında , IE7'nin kendisi seçicilerle gayet iyi. Test edildi ve buraya bakın: kimblim.dk/css-tests/selectors
Frank

3

Trident , ::-ms-checkonay kutusu ve radyo düğmesi kontrolleri için sözde öğe sağlar. Örneğin:

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

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

Bu, Windows 8'deki IE10'da aşağıdaki gibi görüntülenir:

resim açıklamasını buraya girin


2

IE6 öznitelik seçicileri anlamadığından, yalnızca IE6 (koşullu yorumlarla) ve jQuery veya IE7.js tarafından görülen bir komut dosyasını Dean Edwards tarafından birleştirebilirsiniz.

IE7 (.js), Microsoft Internet Explorer'ın standartlara uygun bir tarayıcı gibi davranmasını sağlayan bir JavaScript kitaplığıdır. Birçok HTML ve CSS sorununu giderir ve şeffaf PNG'nin IE5 ve IE6 altında düzgün çalışmasını sağlar.

Sınıflar veya jQuery veya IE7.js kullanma seçeneği, beğenilerinize ve beğenmediğiniz kişilere ve diğer gereksinimlerinize bağlıdır (IE6'da 1 bit şeffaflığa geri dönüş yapan tam şeffaflığa sahip PNG-8'e güvenmek zorunda kalmadan belki de siteniz genelinde PNG-24 şeffaflığı). - yalnızca Fireworks ve pngnq vb. tarafından oluşturulur)


1

CSS, onay kutusu türüne veya başka bir türe özgü stili yapmanız için bir yol sunsa da, bunu desteklemeyen tarayıcılarda sorunlar olacaktır.

Bu durumda tek seçeneğiniz sınıfları onay kutularınıza uygulamak olacaktır.

class = "checkbox" ı onay kutularınıza eklemeniz yeterlidir.

Ardından css kodunuzda bu stili oluşturun.

Yapabileceğiniz bir şey şudur:

main.css

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

ie.css

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

Sonra IE özgü css içerir kullanın:

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

IE'de çalışması için yine de sınıfı eklemeniz gerekir ve IE'yi desteklemeyen diğer IE olmayan tarayıcılarda çalışmaz. Ancak, web sitenizi css kodu ile ileri görüşlü hale getirecek ve IE destek aldıkça, belirli css kodunu ve ayrıca css sınıflarını onay kutularından kaldırabileceksiniz.


2 stil sayfası hakkında ipucu için teşekkürler. Her ne kadar im bu tür bir şey önlemek için çalışırken ben sadece onay kutusu için bir stil oluşturacağını düşünüyorum ve thats ...
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.