Stile di input della casella di controllo CSS


178

Qualsiasi stile per inputinfluisce su ogni elemento di input. C'è un modo per specificare lo stile da applicare solo per le caselle di controllo senza applicare una classe a ciascun elemento della casella di controllo?

Risposte:


312

Con CSS 2 puoi fare questo:

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

Questo dovrebbe essere abbastanza ampiamente supportato ormai. Vedi supporto per i browser


18
Credo che IE 7 e maggiori selettori di attributi di supporto, che sono in realtà CSS 2.1. quirksmode.org/css/contents.html
TJ L

2
@realtebo: nota che molti stili (bordo, sfondo, ecc.) non possono essere applicati direttamente alle caselle di controllo HTML.
Roy Tinker,

1
@RoyTinker Dovresti usare outline, non border, per le caselle di controllo.
TylerH,

30

Creo la mia soluzione senza etichetta

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


Come fare con lo sfondo grigio come in questa immagine ( i.stack.imgur.com/Q23fy.png ), se puoi guardare il mio post ( pt.stackoverflow.com/questions/436890/estilizar-checkbox ). Grazie.
Tiago,

Fantastico! Puoi mettere la risposta nel mio post per farmi contrassegnare come fatto?
Tiago,

1
Dopo ore di ricerche e prove questa è l'unica cosa che ha funzionato per me. Grazie!
Segna

1
Esempi fantastici
Adrian Grygutis il

24

Qualcosa che ho scoperto di recente per lo styling dei pulsanti radio e delle caselle di controllo. Prima, dovevo usare jQuery e altre cose. Ma questo è stupidamente semplice.

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

Si può fare lo stesso per una casella di controllo, ovviamente cambiare il input[type=radio]per input[type=checkbox]e il cambiamento border-radius:15px;a border-radius:4px;.

Spero che questo ti sia in qualche modo utile.


Davvero buono, peccato che non funzioni così tanto su Opera né su IE = (
Michel Ayres,

1
Se vuoi applicare il tuo stile a una casella / input, dai un'occhiata al mio post sul blog sugli elementi di input personalizzati tramite CSS . Quindi puoi modellarlo come preferisci solo con CSS, incluso un fallback IE8.
Felix Hagspiel,

8

Anche le lezioni funzionano bene, come ad esempio:

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

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

Probabilmente non è necessario nidificare il .checkbox all'interno del modulo perché è improbabile trovare una casella di controllo al di fuori di un modulo. Anche input .checkbox dovrebbe essere input.checkbox
Duncan Walker

@DuncanWalker Non l'ho testato, ma i formtag non sarebbero necessari per collegare il controllo di input a un controllo di invio predefinito?
Jim Fell,

1
@Jim Fell questo non funziona. Se creo due classi diverse per due caselle di controllo con stili diversi, ad esempio .checkbox1 [input = 'checkbox'] e .checkbox2 [input = 'checkbox'], gli stili avranno sempre effetto su entrambi, indipendentemente dal modo in cui ti assicuri che gli stili siano separati?
Krys,

@Krys Devi dare ai tuoi elementi della casella di controllo nomi di classe diversi.
Jim Fell,

4

È possibile applicare solo a determinati attributi facendo:

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

Lo spiega qui .


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

Ma questo funzionerà solo per i browser tranne IE7 e inferiori, per quelli che dovrai usare una classe.


al di sotto di IE7 lo è, IE7 stesso va bene con i selettori. Testato e vedi qui: kimblim.dk/css-tests/selectors
Frank Nocke

3

Trident fornisce lo ::-ms-checkpseudo-elemento per i controlli di casella di controllo e pulsante di opzione. Per esempio:

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

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

Viene visualizzato come segue in IE10 su Windows 8:

inserisci qui la descrizione dell'immagine


2

Poiché IE6 non comprende i selettori di attributi, è possibile combinare uno script visto solo da IE6 (con commenti condizionali) e jQuery o IE7.js di Dean Edwards.

IE7 (.js) è una libreria JavaScript per far sì che Microsoft Internet Explorer si comporti come un browser conforme agli standard. Risolve molti problemi HTML e CSS e fa funzionare correttamente PNG trasparente in IE5 e IE6.

La scelta di utilizzare classi o jQuery o IE7.js dipende dai tuoi gusti e antipatie e dalle tue altre esigenze (forse la trasparenza PNG-24 in tutto il tuo sito senza dover fare affidamento su PNG-8 con trasparenza completa che ricade sulla trasparenza a 1 bit su IE6 - creato solo da Fireworks e pngnq, ecc.)


1

Sebbene i CSS forniscano un modo per eseguire lo stile specifico del tipo di casella di controllo o di un altro tipo, ci saranno problemi con i browser che non lo supportano.

Penso che la tua unica opzione in questo caso sarà applicare le classi alle tue caselle di controllo.

aggiungi la class = "checkbox" alle tue caselle di controllo.

Quindi crea quello stile nel tuo codice CSS.

Una cosa che potresti fare è questa:

main.css

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

ie.css

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

Quindi utilizzare i CSS specifici di IE includere:

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

Sarà comunque necessario aggiungere la classe affinché funzioni in IE e non funzionerà in altri browser non IE che non supportano IE. Ma renderà il tuo sito web all'avanguardia con il codice css e man mano che IE riceverà supporto, sarai in grado di rimuovere il codice css specifico e anche le classi css dalle caselle di controllo.


grazie per il suggerimento sul foglio di stile 2. anche se sto cercando di evitare quel genere di cose, penso che creerò uno stile per la casella di controllo e il gioco è fatto ...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.