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?

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


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


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

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

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


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!


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>

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.