Cases à cocher dans les pages Web - comment les agrandir?

115

Les cases à cocher standard affichées dans la plupart des navigateurs sont assez petites et n'augmentent pas en taille même lorsqu'une police plus grande est utilisée. Quelle est la meilleure façon, indépendante du navigateur, d'afficher des cases à cocher plus grandes?

Tony le poney
la source

Réponses:

144

Au cas où cela peut aider n'importe qui, voici un simple CSS comme point de départ. Le transforme en un carré arrondi de base assez grand pour les pouces avec une couleur d'arrière-plan basculée.

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

Paul
la source
@GabrielW C'est vrai. Utilisez simplement l'équivalent pour les autres
taylorcressy
@taylorcressy Sauf pour IE (également IE 11) caniuse.com/#search=Appearance - mais a bien fonctionné pour les autres navigateurs. Merci!
CodeBrauer
16
ce serait bien s'il y avait une tique à l'intérieur aussi :)
robert king
@Paul: Merci pour le partage. Je me demandais comment vous gérez la coche. Avec l'arrière-plan juste défini sur une couleur, la coche blanche dans la zone n'est plus visible. Existe-t-il une solution simple? J'ai essayé d'ajouter une entité html pour l'enregistrement dans a: avant, mais je me demandais s'il existe une alternative
PBandJen
1
J'ai utilisé une couleur plus foncée pour la couleur de fond vérifiée et ce n'est pas si mal sans un "chèque"
JR Lawhorne
47

En fait, il existe un moyen de les agrandir, des cases à cocher comme toute autre chose (même un iframe comme un bouton Facebook).

Enveloppez-les dans un élément "zoomé":

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

Cela peut sembler un peu "redimensionné" mais cela fonctionne.

Bien sûr, vous pouvez faire en sorte que ce div float: left et mettre votre étiquette à côté, float: left aussi.

FlorianB
la source
1
Notez que sur Firefox (à partir de la version 36), cela se traduira par une apparence très floue. Il évolue bien dans Chrome, cependant. Démo: jsfiddle.net/tzp858j3
Kat
n'y a-t-il pas de meilleure solution qui ne semble PAS à l'échelle?
basZero
3
Ne peut pas zoom: 2et transform: scale(2)être directement appliqué à la case à cocher? Pourquoi a-t-il besoin d'un emballage?
Atav32
Merci! On dirait que votre code prend en compte plus de navigateurs que je ne pourrais jamais le tester, mais cela fonctionne sur tout ce que j'ai essayé. Particulièrement agréable sur mon I-phone, où les cases à cocher deviennent presque des points! BTW, vous pouvez mettre une échelle fractionnaire plus petite (comme 1.5) aux endroits où ce snipet met "2", et pour une case à cocher de taille moyenne.
Randy
26

Essayez ce CSS

input[type=checkbox] {width:100px; height:100px;}
Collin Blanc
la source
2
Pas totalement cross-browser (il est préférable de définir une classe en HTML et d'utiliser le sélecteur de classe en CSS), mais cela pourrait être une meilleure solution que la mienne. +1
Harmen
1
J'utilisais la largeur et la hauteur à des fins d'exemple. Une combinaison de Harmen et de ma solution est probablement la voie à suivre, car vous aurez peut-être besoin de plus de style que ce que CSS peut raisonnablement fournir.
Collin White
6
Cela ne fonctionnera que dans certains navigateurs et pas dans de nombreux navigateurs modernes.
RJ Owen
1
Cela fonctionne sur ipad safari où les cases à cocher doivent souvent être plus grandes pour permettre aux utilisateurs de cliquer plus facilement.
user3032973
3
La principale limitation est que cela ne fonctionne pas du tout dans Firefox (à partir de Firefox 36) et n'aura en fait pas l'air assez naturel (la case à cocher est de taille normale mais le remplissage autour d'elle remplit la zone de 100 x 100 pixels.
Kat
5

J'ai essayé de changer le paddinget marginet ainsi que le widthet height, puis j'ai finalement trouvé que si vous augmentez simplement l'échelle, cela fonctionnera:

input[type=checkbox] {
    transform: scale(1.5);
}
Justin
la source
1

Voici une astuce qui fonctionne dans les navigateurs les plus récents (IE9 +) en tant que solution CSS uniquement qui peut être améliorée avec javascript pour prendre en charge IE8 et les versions antérieures.

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

Donnez au style ce labelà quoi vous voulez que la case à cocher ressemble

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

Pour javascript, vous pourrez ajouter des classes à l'étiquette pour afficher l'état. De plus, il serait judicieux d'utiliser la fonction suivante:

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

MODIFIER pour modifier les #checkboxIDstyles

zzzzBov
la source
voir stackoverflow.com/a/3772914/190135 pour un lien vers le code source complet de cette technique
AlexChaffee
1

J'écris une application phonegap et les cases à cocher varient en taille, en apparence, etc. J'ai donc créé ma propre case à cocher simple:

D'abord le code HTML:

<span role="checkbox"/>

Puis le 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);
}

Pour activer l'état de la case à cocher, j'ai utilisé JQuery:

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

Mais cela peut facilement se faire sans cela ...

J'espère que cela peut vous aider!

wesamot
la source
1

Décision pure et moderne du CSS 2020 , sans mise à l'échelle floue ni transformation non pratique. Et avec tick! =)

Fonctionne bien dans les navigateurs Firefox et Chromium.

Ainsi, vous pouvez définir vos cases à cocher de manière purement ADAPTIVE , simplement en définissant des blocs parents font-heightet cela augmentera avec le texte!

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>

FlameStorm
la source