Pola wyboru na stronach internetowych - jak je powiększyć?


115

Standardowe pola wyboru renderowane w większości przeglądarek są dość małe i nie powiększają się, nawet jeśli używana jest większa czcionka. Jaki jest najlepszy, niezależny od przeglądarki sposób wyświetlania większych pól wyboru?

Odpowiedzi:


144

Jeśli to może pomóc każdemu, tutaj jest prosty CSS jako punkt wyjścia. Zmienia go w podstawowy zaokrąglony kwadrat, wystarczająco duży, aby pomieścić kciuki z przełączanym kolorem tła.

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 Zgadza się. Po prostu użyj odpowiednika dla innych
taylorcressy

@taylorcressy Z wyjątkiem IE (także IE 11) caniuse.com/#search=Appearance - ale działało dobrze w innych przeglądarkach. Dzięki!
CodeBrauer

16
byłoby miło, gdyby w środku też był kleszcz :)
robert king

@Paul: Dzięki za udostępnienie. Zastanawiałem się, jak sobie radzisz z wyświetlaniem znacznika wyboru. Gdy tło jest już ustawione na kolor, biały znacznik wyboru w polu nie jest już widoczny. Czy istnieje proste rozwiązanie? Próbowałem dodać jednostkę html do sprawdzenia w: przed, ale zastanawiałem się, czy istnieje alternatywa
PBandJen

1
Użyłem ciemniejszego koloru tła w kratkę i nie jest tak źle bez „czeku”
JR Lawhorne

47

Właściwie jest sposób, aby je powiększyć, pola wyboru, jak wszystko inne (nawet ramka iframe, taka jak przycisk na Facebooku).

Umieść je w „powiększonym” elemencie:

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

Może wyglądać na nieco „przeskalowaną”, ale działa.

Oczywiście możesz sprawić, że div float: left i umieścić obok siebie etykietę, float: left.


1
Zwróć uwagę, że w przeglądarce Firefox (od wersji 36) spowoduje to bardzo rozmyty wygląd. Jednak dobrze skaluje się w Chrome. Demo: jsfiddle.net/tzp858j3
Kat,

czy nie ma lepszego rozwiązania, które NIE wygląda na skalowane?
basZero

3
Nie można zoom: 2i transform: scale(2)można go zastosować bezpośrednio do pola wyboru? Dlaczego potrzebuje opakowania?
Atav32

Dzięki! wygląda na to, że twój kod bierze pod uwagę więcej przeglądarek niż kiedykolwiek mogłem przetestować, ale działa na wszystkim, czego próbowałem. Szczególnie ładne na moim I-phone, gdzie pola wyboru stają się kropkami! Przy okazji, możesz umieścić mniejsze skalowanie ułamkowe (np. 1.5) w miejscach, w których ten snipet wstawia "2", i dla średniej wielkości pola wyboru.
Randy

26

Wypróbuj ten CSS

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

2
Nie do końca między przeglądarkami (lepiej jest ustawić klasę w HTML i użyć selektora klas w CSS), ale może to być lepsze rozwiązanie niż moje. +1
Harmen

1
Na przykład użyłem szerokości i wysokości. Prawdopodobnie połączenie Harmena i mojego rozwiązania jest najlepszym rozwiązaniem, ponieważ możesz potrzebować więcej stylizacji, niż CSS może zapewnić.
Collin White,

6
Będzie to działać tylko w niektórych przeglądarkach, a nie w wielu nowoczesnych.
RJ Owen,

1
Działa to na iPadzie Safari, gdzie pola wyboru często muszą być większe, aby ułatwić użytkownikom klikanie.
user3032973

3
Głównym ograniczeniem jest to, że nie działa w ogóle w Firefoksie (jako Firefoksa 36) i będzie w rzeczywistości wyglądają dość nienaturalnie (pole wyboru jest regularny wielkości ale wyściółka wokół wypełnia obszar 100 x 100px.
Kat

5

Próbowałem zmienić paddingi margini dobrze jak widthi height, a potem w końcu stwierdziłem, że jeśli po prostu zwiększysz skalę, to zadziała:

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

1

Oto sztuczka, która działa w najnowszych przeglądarkach (IE9 +) jako jedyne rozwiązanie CSS, które można ulepszyć za pomocą javascript do obsługi IE8 i starszych.

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

Stylizuj labeltak, jak chcesz, aby wyglądało pole wyboru

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

W przypadku javascript będziesz mógł dodać klasy do etykiety, aby pokazać stan. Warto też skorzystać z następującej funkcji:

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

EDYCJA, aby zmodyfikować #checkboxIDstyle


Zobacz stackoverflow.com/a/3772914/190135, aby uzyskać link do pełnego kodu źródłowego tej techniki
AlexChaffee

1

Piszę aplikację phonegap, a pola wyboru różnią się rozmiarem, wyglądem itp. Dlatego stworzyłem własne proste pole wyboru:

Najpierw kod HTML:

<span role="checkbox"/>

Następnie 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);
}

Aby przełączyć stan pola wyboru, użyłem JQuery:

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

Ale można to łatwo zrobić bez tego ...

Mam nadzieję, że to pomoże!


1

Tylko nowoczesna decyzja CSS 2020 , bez rozmytego skalowania lub nieporęcznej transformacji. I z kleszczem! =)

Działa dobrze w przeglądarkach opartych na Firefox i Chromium.

Możesz więc rządzić swoimi polami wyboru wyłącznie ADAPTACYJNIE , po prostu ustawiając bloki nadrzędne, font-heighta będzie rosnąć wraz z tekstem!

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>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.