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

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

【问题讨论】:

    标签: html css checkbox


    【解决方案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 样式

    【讨论】:

    【解决方案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');
        });
    }
    

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

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 2013-12-27
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多