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.