Флажки на веб-страницах - как их увеличить?

116

Стандартные флажки, отображаемые в большинстве браузеров, довольно маленькие и не увеличиваются в размере даже при использовании более крупного шрифта. Каков наилучший, независимый от браузера способ отображения более крупных флажков?

Тони Пони
источник

Ответы:

144

Если это может кому-то помочь, вот простой CSS в качестве отправной точки. Превращает его в обычный квадрат с закругленными углами, достаточно большой для больших пальцев, с измененным цветом фона.

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 Верно. Просто используйте эквивалент для остальных
taylorcressy
@taylorcressy За исключением IE (также IE 11) caniuse.com/#search=Appearance - но отлично работал для других браузеров. Спасибо!
CodeBrauer
16
было бы неплохо, если бы внутри тоже была галочка :)
Роберт
@ Пол: Спасибо, что поделились. Мне было интересно, как вы справляетесь с появлением галочки. Когда фон только что установлен на цвет, белая галочка в поле больше не видна. Есть простое решение? Я пробовал добавить html-объект для проверки в a: before, но
мне
1
Я использовал более темный цвет для проверенного цвета фона, и это не так уж плохо без «проверки»
JR Lawhorne
48

На самом деле есть способ сделать их больше, флажки, как и все остальное (даже iframe, например, кнопка facebook).

Оберните их в "увеличенный" элемент:

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

Это может показаться немного "измененным", но это работает.

Конечно, вы можете сделать этот div float: left и поставить рядом с ним метку float: left.

ФлорианБ
источник
1
Обратите внимание, что в Firefox (начиная с версии 36) это приведет к очень размытому виду. Однако он хорошо масштабируется в Chrome. Демо: jsfiddle.net/tzp858j3
Kat
нет лучшего решения, которое НЕ выглядело бы масштабным?
basZero
3
Не могу zoom: 2и transform: scale(2)быть непосредственно применены к флажку? Зачем ему обертка?
Atav32 08
Спасибо! похоже, что ваш код учитывает больше браузеров, чем я мог когда-либо тестировать, но он работает со всем, что я пробовал. Особенно приятно на моем I-телефоне, где флажки почти превращаются в точки! Кстати, вы можете установить меньшее дробное масштабирование (например, 1,5) в тех местах, где этот сниппет ставит «2», и для флажка среднего размера.
Randy
26

Попробуйте этот CSS

input[type=checkbox] {width:100px; height:100px;}
Коллин Уайт
источник
2
Не полностью кроссбраузерный (лучше установить класс в HTML и использовать селектор классов в CSS), но это может быть лучшим решением, чем мое. +1
Harmen
1
Для примера я использовал ширину и высоту. Вероятно, комбинация Хармена и моего решения - это выход, поскольку вам может потребоваться больше стилей, чем может разумно предоставить CSS.
Collin White
6
Это будет работать только в некоторых браузерах, но не во многих современных.
RJ Owen
1
Это работает на ipad safari, где флажки часто должны быть больше, чтобы пользователям было легче нажимать.
user3032973
3
Основным ограничением является то, что он вообще не работает в Firefox (начиная с Firefox 36) и на самом деле будет выглядеть довольно неестественно (флажок обычного размера, но отступы вокруг него заполняют область 100 x 100 пикселей.
Кэт,
5

Я попытался изменить и paddingи, marginа также widthи height, а затем, наконец, обнаружил, что если вы просто увеличите масштаб, все будет работать:

input[type=checkbox] {
    transform: scale(1.5);
}
Джастин
источник
1

Вот трюк, который работает в большинстве последних браузеров (IE9 +) как решение только для CSS, которое можно улучшить с помощью javascript для поддержки IE8 и ниже.

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

Создайте стиль так, labelкак вы хотите, чтобы флажок выглядел

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

Для javascript вы сможете добавлять классы к метке, чтобы отображать состояние. Также было бы разумно использовать следующую функцию:

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

ИЗМЕНИТЬ, чтобы изменить #checkboxIDстили

zzzzBov
источник
см. stackoverflow.com/a/3772914/190135 для ссылки на полный исходный код этой техники
AlexChaffee
1

Я пишу приложение для телефонной связи, и флажки различаются по размеру, внешнему виду и т. Д. Поэтому я сделал свой собственный простой флажок:

Сначала HTML-код:

<span role="checkbox"/>

Затем 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);
}

Чтобы переключить состояние флажка, я использовал JQuery:

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

Но без этого легко обойтись ...

Надеюсь, это поможет!

Весамот
источник
1

Чистое современное решение только для CSS 2020 года , без размытого масштабирования или ненужного преобразования. И с галочкой! знак равно

Хорошо работает в браузерах на базе Firefox и Chromium.

Итак, вы можете управлять своими флажками чисто АДАПТИВНО , просто установив родительский блок, font-heightи он будет расти вместе с текстом!

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>

FlameStorm
источник