Caixas de seleção em páginas da web - como torná-las maiores?


114

As caixas de seleção padrão renderizadas na maioria dos navegadores são bem pequenas e não aumentam de tamanho, mesmo quando uma fonte maior é usada. Qual é a melhor maneira independente de navegador de exibir caixas de seleção maiores?

Respostas:


144

Caso isso possa ajudar alguém, aqui está o CSS simples como um ponto de partida. Transforma-o em um quadrado arredondado básico, grande o suficiente para polegares com uma cor de fundo alternada.

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 Isso mesmo. Basta usar o equivalente para os outros
taylorcressy

@taylorcressy Exceto para IE (também IE 11) caniuse.com/#search=Appearance - mas funcionou bem para outros navegadores. Obrigado!
CodeBrauer

16
seria bom se houvesse um carrapato dentro também :)
robert king

@Paul: Obrigado por compartilhar. Eu queria saber como você lida com a exibição da marca de seleção. Com o fundo apenas definido para uma cor, a marca de seleção branca na caixa não está mais visível. Existe uma solução fácil? Eu tentei adicionar uma entidade html para a verificação em a: before, mas me perguntando se há uma alternativa
PBandJen

1
Usei uma cor mais escura para a cor de fundo quadriculada e não é tão ruim sem uma "marca"
JR Lawhorne

47

Na verdade, existe uma maneira de torná-los maiores, caixas de seleção como qualquer outra coisa (até mesmo um iframe como um botão do Facebook).

Envolva-os em um elemento "ampliado":

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

Pode parecer um pouco "redimensionado", mas funciona.

Claro que você pode fazer esse div float: left e colocar seu rótulo ao lado dele, float: left também.


1
Observe que no Firefox (a partir da versão 36), isso resultará em uma aparência muito borrada. Ele se adapta bem no Chrome, no entanto. Demo: jsfiddle.net/tzp858j3
Kat

não há solução melhor que NÃO pareça dimensionada?
basZero

3
Não pode zoom: 2e pode transform: scale(2)ser aplicado diretamente à caixa de seleção? Por que ele precisa de um invólucro?
Atav32

Obrigado! Parece que seu código leva mais navegadores em consideração do que eu poderia testar, mas funciona em tudo que tentei. Especialmente bom no meu I-phone, onde as caixas de seleção quase se transformam em pontos! BTW, você pode colocar escala fracionária menor (como 1,5) nos lugares onde este recorte coloca "2" e para uma caixa de seleção de tamanho médio.
Randy

26

Experimente este CSS

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

2
Não totalmente cross-browser (é melhor definir uma classe em HTML e usar o seletor de classe em CSS), mas esta pode ser uma solução melhor do que a minha. +1
Harmen

1
Eu estava usando largura e altura para fins de exemplo. Provavelmente uma combinação de Harmen e minha solução é o caminho a seguir, pois você pode precisar de mais estilo do que o CSS pode razoavelmente fornecer.
Collin White

6
Isso só funcionará em alguns navegadores, e não em muitos navegadores modernos.
RJ Owen

1
Isso funciona no ipad safari, onde as caixas de seleção geralmente precisam ser maiores para facilitar o clique dos usuários.
user3032973

3
A principal limitação é que ele não funciona no Firefox (a partir do Firefox 36) e, na verdade, parecerá pouco natural (a caixa de seleção é de tamanho normal, mas o preenchimento em torno dela preenche a área de 100 x 100px.
Kat

5

Tentei mudar o paddinge margine bem como o widthe height, e finalmente descobri que se você apenas aumentar a escala, vai funcionar:

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

1

Aqui está um truque que funciona nos navegadores mais recentes (IE9 +) como uma solução somente CSS que pode ser aprimorada com javascript para oferecer suporte ao IE8 e versões anteriores.

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

Defina o estilo labelcom o que você deseja que a caixa de seleção fique

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

Para javascript, você poderá adicionar classes ao rótulo para mostrar o estado. Além disso, seria aconselhável usar a seguinte função:

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

EDITAR para modificar #checkboxIDestilos


consulte stackoverflow.com/a/3772914/190135 para um link para o código-fonte completo para esta técnica
AlexChaffee

1

Estou escrevendo um aplicativo phonegap e as caixas de seleção variam em tamanho, aparência, etc. Então, criei minha própria caixa de seleção simples:

Primeiro, o código HTML:

<span role="checkbox"/>

Então o 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);
}

Para alternar o estado da caixa de seleção, usei JQuery:

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

Mas pode ser feito facilmente sem ele ...

Espero que possa ajudar!


1

Simples decisão do CSS 2020 moderno puro , sem escala borrada ou transformação não útil. E com carrapato! =)

Funciona bem em navegadores baseados em Firefox e Chromium.

Assim, você pode controlar suas caixas de seleção de forma puramente ADAPTATIVA , apenas definindo o bloco pai font-heighte ele crescerá com o texto!

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>

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.