Caselle di controllo nelle pagine web: come ingrandirle?


114

Le caselle di controllo standard visualizzate nella maggior parte dei browser sono piuttosto piccole e non aumentano di dimensione anche quando viene utilizzato un carattere più grande. Qual è il modo migliore e indipendente dal browser per visualizzare caselle di controllo più grandi?

Risposte:


144

Nel caso in cui questo possa aiutare qualcuno, ecco un semplice CSS come punto di partenza. Lo trasforma in un quadrato arrotondato di base abbastanza grande per i pollici con un colore di sfondo alternato.

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 Esatto. Usa l'equivalente per gli altri
taylorcressy

@taylorcressy Tranne IE (anche IE 11) caniuse.com/#search=Appearance - ma ha funzionato bene per altri browser. Grazie!
CodeBrauer

16
sarebbe bello se ci fosse anche un segno di spunta all'interno :)
robert king

@ Paul: grazie per la condivisione. Mi chiedevo come affronti la comparsa del segno di spunta. Con lo sfondo appena impostato su un colore, il segno di spunta bianco nella casella non è più visibile. C'è una soluzione semplice? Ho provato ad aggiungere un'entità html per il controllo in a: prima, ma chiedendomi se esiste un'alternativa
PBandJen

1
Ho usato un colore più scuro per il colore di sfondo controllato e non è così male senza un "segno di spunta"
JR Lawhorne

47

In realtà c'è un modo per ingrandirle, caselle di controllo come qualsiasi altra cosa (anche un iframe come un pulsante Facebook).

Avvolgili in un elemento "ingrandito":

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

Potrebbe sembrare un po '"ridimensionato" ma funziona.

Ovviamente puoi fare in modo che div float: left e aggiungere la tua etichetta, float: left.


1
Nota che su Firefox (a partire dalla versione 36), questo risulterà in un aspetto molto sfocato. Tuttavia, si adatta bene a Chrome. Demo: jsfiddle.net/tzp858j3
Kat

non c'è soluzione migliore che NON sembri ridimensionata?
basZero

3
Non può zoom: 2e transform: scale(2)essere applicato direttamente alla casella di controllo? Perché ha bisogno di un wrapper?
Atav32

Grazie! sembra che il tuo codice tenga conto di più browser di quanto potrei mai testare, ma funziona su tutto ciò che ho provato. Particolarmente bello sul mio I-phone, dove le caselle di controllo diventano quasi punti! A proposito, puoi inserire un ridimensionamento frazionario più piccolo (come 1.5) nei punti in cui questo snipet mette "2" e per una casella di controllo di medie dimensioni.
Randy

26

Prova questo CSS

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

2
Non totalmente cross-browser (è meglio impostare una classe in HTML e utilizzare il selettore di classe in CSS), ma questa potrebbe essere una soluzione migliore della mia. +1
Harmen

1
Stavo usando la larghezza e l'altezza per scopi di esempio. Probabilmente una combinazione di Harmen e la mia soluzione è la strada da percorrere poiché potresti aver bisogno di più stile di quanto i CSS possano ragionevolmente fornire.
Collin White

6
Funzionerà solo in alcuni browser e non in molti di quelli moderni.
RJ Owen,

1
Funziona su iPad Safari, dove le caselle di controllo spesso devono essere più grandi per rendere più facile il clic per gli utenti.
user3032973

3
La principale limitazione è che non funziona affatto in Firefox (a partire da Firefox 36) e in effetti apparirà piuttosto innaturale (la casella di controllo è di dimensioni regolari ma riempie intorno ad essa riempie l'area di 100 x 100 px.
Kat

5

Ho provato a cambiare paddinge margine così come widthe height, e alla fine ho scoperto che se aumenti solo la scala funzionerà:

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

1

Ecco un trucco che funziona nei browser più recenti (IE9 +) come una soluzione solo CSS che può essere migliorata con javascript per supportare IE8 e versioni precedenti.

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

Definisci lo stile labelcon cui vuoi che appaia la casella di controllo

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

Per javascript, sarai in grado di aggiungere classi all'etichetta per mostrare lo stato. Inoltre, sarebbe saggio utilizzare la seguente funzione:

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

MODIFICA per modificare gli #checkboxIDstili


vedere stackoverflow.com/a/3772914/190135 per un collegamento al codice sorgente completo per questa tecnica
AlexChaffee

1

Sto scrivendo un'app per phonegap e le caselle di controllo variano in dimensioni, aspetto, ecc. Quindi ho creato la mia semplice casella di controllo:

Prima il codice HTML:

<span role="checkbox"/>

Quindi il 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);
}

Per attivare o disattivare lo stato della casella di controllo, ho usato JQuery:

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

Ma può essere fatto facilmente senza di essa ...

Spero possa aiutare!


1

Decisione solo CSS 2020 moderna e pura , senza ridimensionamento sfocato o trasformazioni inutili. E con il segno di spunta! =)

Funziona bene con Firefox e browser basati su Chromium.

Quindi, puoi regolare le tue caselle di controllo puramente ADAPTIVE , semplicemente impostando il blocco genitore font-heighte crescerà con il testo!

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>

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.