网页中的复选框——如何使它们更大?

Posted

技术标签:

【中文标题】网页中的复选框——如何使它们更大?【英文标题】:Checkboxes in web pages – how to make them bigger? 【发布时间】:2011-05-07 10:33:28 【问题描述】:

在大多数浏览器中呈现的标准复选框非常小,即使使用较大的字体也不会增加大小。显示较大复选框的最佳、独立于浏览器的方式是什么?

【问题讨论】:

【参考方案1】:

如果这可以帮助任何人,这里有一个简单的 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 除了 IE(还有 IE 11)caniuse.com/#search=Appearance - 但适用于其他浏览器。谢谢! 如果里面也有一个勾号就好了:) @Paul:谢谢分享。我想知道你如何处理出现的复选标记。背景刚刚设置为一种颜色,框中的白色复选标记不再可见。有简单的解决方案吗?我已经尝试在 :before 中添加一个 html 实体进行检查,但想知道是否有替代方法 我为选中的背景颜色使用了较深的颜色,没有“检查”也不错【参考方案2】:

实际上有一种方法可以让它们变得更大,复选框就像其他任何东西一样(甚至是像 facebook 按钮这样的 iframe)。

将它们包装在“缩放”元素中:

.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 浮动:left 并把你的标签放在它旁边,float:left 也一样。

【讨论】:

请注意,在 Firefox(从版本 36 开始)上,这将导致外观非常模糊。不过,它在 Chrome 中可以很好地扩展。演示:jsfiddle.net/tzp858j3 有没有更好的解决方案,看起来没有缩放? zoom: 2transform: scale(2)不能直接应用到复选框上吗?为什么需要包装器? 谢谢!看起来您的代码考虑了更多的浏览器,然后我可以测试,但它适用于我尝试过的所有内容。在我的手机上特别好,复选框几乎变成了点!顺便说一句,您可以在此片段放置“2”的位置放置较小的分数缩放(如 1.5),以及中等大小的复选框。 zoom: 2 和 transform: scale(2) 是我需要应用于包装复选框的 div 【参考方案3】:

试试这个 CSS

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

【讨论】:

不完全跨浏览器(最好在 HTML 中设置一个类并在 CSS 中使用类选择器),但这可能是比我更好的解决方案。 +1 我使用宽度和高度作为示例。可能是 Harmen 和我的解决方案的结合是可行的方法,因为您可能需要比 CSS 合理提供的更多样式。 这仅适用于某些浏览器,而不适用于许多现代浏览器。 这适用于 ipad safari,其中复选框通常需要更大以使用户更容易点击。 主要限制是它在 Firefox 中根本不起作用(从 Firefox 36 开始)并且实际上看起来很不自然(复选框是常规大小但它周围的填充填充了 100 x 100px 区域.【参考方案4】:

我尝试更改paddingmargin 以及widthheight,然后最后发现如果你只是增加规模就可以了:

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

【讨论】:

我尝试了许多这样的解决方案,这是唯一没有引起其他问题的解决方案,还值得注意的是,浏览器非常广泛地支持缩放,因此非常跨浏览器兼容。我创建了一个类,因此我可以只将它应用于我想要的复选框,它可以用来缩放任何东西:.scale-up-20 transform: scale(1.2);【参考方案5】:

纯粹的现代 2020 仅 CSS 决定,没有模糊的缩放或不方便的转换。并带有滴答声! =)

在 Firefox 和基于 Chromium 的浏览器中运行良好。

因此,您可以完全自适应来统治您的复选框,只需设置父块的font-size,它就会随着文本而增长!

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>
<label for="check3" style="font-size:150%"><input type="checkbox" id="check3" checked="checked" /> bigger checkbox </label>

【讨论】:

也在 Internet Explorer 中工作。【参考方案6】:

这是一个适用于最新浏览器 (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 样式

【讨论】:

请参阅***.com/a/3772914/190135 以获取此技术的完整源代码的链接【参考方案7】:

我正在编写一个 phonegap 应用程序,并且复选框的大小、外观等各不相同。 所以我自己做了一个简单的复选框:

首先是 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');
    );

但是没有它也可以轻松完成...

希望对你有帮助!

【讨论】:

以上是关于网页中的复选框——如何使它们更大?的主要内容,如果未能解决你的问题,请参考以下文章

您如何使复选框单元格中的文本能够被编辑?

如何使复选框的行为类似于角度 6 中的单选按钮?

如何使新的复选框出现在Android中的单击按钮上

如何在我的复选框内嵌和复选框旁边获取文本?

pyqt5如何使复选框将两个Qslider锁定在一起[关闭]

如果选中(可可),您将如何使复选框删除表中的一行?