2010-11-09 3 views

Répondre

86

Dans le cas où cela peut aider quelqu'un, voici CSS simple comme point de départ. Le transforme en un carré arrondi de base assez grand pour les pouces avec une couleur de fond 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; 
} 
+2

Nice - Mais Chorme/Safari seulement -. – CodeBrauer

+0

droit @GabrielW C'est vrai il suffit d'utiliser l'équivalent pour les autres – taylorcressy

+0

@taylorcressy Sauf pour IE (également IE 11) http://caniuse.com/# search = Apparence - mais a bien fonctionné pour les autres navigateurs .. Merci! – CodeBrauer

22

Essayez cette CSS

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

Non 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

+0

Notez que cela rend les contrôles d'apparence floue dans certains navigateurs car le contrôle natif qui est mis à l'échelle est une image de taille fixe. – jball

+1

J'utilisais la largeur et la hauteur à titre d'exemple. Probablement une combinaison de Harmen et de ma solution est la voie à suivre car vous pourriez avoir besoin de plus de style que CSS peut raisonnablement fournir. –

2

Modification de la taille de la case à cocher en utilisant CSS produit des résultats incohérents entre les différents navigateurs et systèmes d'exploitation. Vous ne pouvez pas vraiment le rendre plus grand.

Vous pouvez les recoiffer, cependant: http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

+0

le lien ne fonctionne plus –

1

Voici une astuce qui fonctionne dans la plupart des navigateurs récents (IE9 +) en tant que CSS seule solution qui peut être amélioré avec le javascript pour soutenir IE8 et au-dessous.

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

style du label avec ce que vous voulez que la case à cocher pour ressembler

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

Pour javascript, vous serez en mesure d'ajouter des classes à l'étiquette pour montrer l'état. En outre, il serait sage d'utiliser la fonction suivante:

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

EDIT pour modifier les styles

+0

voir http://stackoverflow.com/a/3772914/190135 pour un.. lien vers le code source complet pour cette technique – AlexChaffee

0

#checkboxID Je suis writtinga application PhoneGap et cases à cocher sont de taille variable, regardez, etc. donc j'ai fait mon propre simple case à cocher:

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 basculer l'état de case à cocher, je JQuery:

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

Mais il peut facilement être fait sans elle ...

Je espère que ça peut aider!

25

En fait, il est un moyen de les rendre plus gros, des cases à cocher comme tout le reste (même un iframe comme un bouton facebook).

les envelopper dans un « zoomée » élément:

.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; 
    -webkit-transform-origin:0 0; 
} 

<div class="double"> 
    <input type="checkbox" name="hello" value="1"> 
</div> 

Il peut sembler un peu « redimensionné », mais cela fonctionne.

Bien sûr, vous pouvez faire flotter ce div: à gauche et mettre votre étiquette à côté, float: à gauche aussi.

+0

alternatif fonctionne très bien - mais pas sur IE8 - IE9 + fonctionne;) – CodeBrauer

+0

Notez que sur Firefox (de la version 36), cela résultat dans une apparence très floue. Il évolue bien dans Chrome, cependant. Démo: http://jsfiddle.net/tzp858j3/ – Kat

+0

n'y a-t-il pas de meilleure solution qui ne semble pas à l'échelle? – basZero

Questions connexes