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.