【问题标题】:Remove border circle from radio input从无线电输入中删除边框圈
【发布时间】:2016-03-21 01:44:10
【问题描述】:

我想使用图像而不是常规的无线电输入。

我是这样弄的:

input[type="radio"]{
    content:url('/images/new-home-page/Checkbox.png');
    height:3vh;
    width:3vh;
}
input[type="radio"]:checked{
    content:url('/images/new-home-page/checkedCheckbox.png');
}

不幸的是,他们周围有圈子。我曾尝试使用border:none 或text-decoration:none,但它没有帮助。有人可以帮我解决这个问题吗?

它们现在看起来像这样:

【问题讨论】:

  • 你试过outline:none 吗?
  • 为什么是内容而不是背景?我以前从未使用过它
  • 不感兴趣,为什么要使用带有单选按钮界面的复选框图像?您不应该使用<input type="checkbox"/>s 以免混淆用户对行为的期望吗?
  • 我使用内容是因为我发现一些 stackoverflow 用户这样做。单选输入是正确的选择,因为我的页面用户只需要从这两个中选择一个。这是一个典型的电台选择

标签: html css


【解决方案1】:

我会请求你使用 CSS 的 appearance 属性,它负责这样的组件。因此,设置appearance: none 将使组件的外观类似于display: none,这正是您所需要的。您最好使用这段 CSS 来使组件不显示,同时将元素保留在视图中:

-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
-o-appearance: none;
appearance: none;

片段

input {
  content: url('http://i.stack.imgur.com/M3EkO.png');
  height: 16px;
  width: 16px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}
input:checked {
  content: url('http://i.stack.imgur.com/Ialva.png');
}
Checkbox:
<input type="checkbox" name="" id="" /> <br />
Radios:
<input type="radio" name="Hi" id="" />
<input type="radio" name="Hi" id="" />

输出:http://output.jsbin.com/digebimolu/1

【讨论】:

  • @divHelper11 看看我添加的sn-p。
  • @divHelper11 这个解决方案的唯一缺点是,它不适用于 IE 8、9、10、11。如果需要,请查看我的答案。
  • @LGSon OP 的代码content: url() 在 IE 10 及更低版本中不起作用!!!看看这个:stackoverflow.com/questions/16132460/…
  • @PraveenKumar 我知道,所以我使用background 切换回原来的答案,以支持 IE 8-11。
【解决方案2】:

您必须隐藏单选按钮并添加更多元素,例如 &lt;span&gt; 和 &lt;label&gt;

它的工作原理如下:http://jsfiddle.net/etz9Lfat/

【讨论】:

  • 您必须在答案中添加代码。不应该只链接到 jsfiddle。
  • @PraveenKumar 它只需要一个小解释,你可以在顶部看到
  • @PraveenKumar 你的回答根本没有解释 BTW :)
【解决方案3】:

这是另一个有趣的解决方案,使用伪元素,您还可以摆脱周围的焦点轮廓。

这样做的真正好处是它也适用于 IE 8-11,不幸的是使用 appearence 的更好解决方案不这样做。

input[type="radio"] {
    display:none;
}
input[type="radio"] + label {
    position: relative;
    padding-left: 54px;
    cursor:pointer;
    font-size: 26px;
}
input[type="radio"] + label:before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    margin-top: -22px;
    width:46px;
    height:46px;
    background: url('http://i.stack.imgur.com/M3EkO.png');
    background-size: contain;
}
input[type="radio"]:checked + label:before {
    background: url('http://i.stack.imgur.com/Ialva.png');
}
<input id="cb" value="1" name="cb" type="radio">
<label for="cb">Text 1</label>
<input id="cb2" value="2" name="cb" type="radio">
<label for="cb2">Text 2</label>

【讨论】:

    【解决方案4】:

    我会建议一个完全不同的解决方案。

    input[type="checkbox"], input[type="radio"] {
        display:none;
    }
    input[type="checkbox"] + label{
        padding-left:35px;
    }
    input[type="checkbox"] + label span {
        display:inline-block;
        width:52px; /* width of the checkbox */
        height:53px; /* height of the checkbox */
        margin:-1px 10px 0 -35px;
        vertical-align:middle;
        background:url('http://i.stack.imgur.com/M3EkO.png')  left top no-repeat;
        cursor:pointer;
    }
    
    /* replaces the image if checked.*/
    input[type="checkbox"]:checked + label span {
        background:url('http://i.stack.imgur.com/Ialva.png') left top no-repeat;
    }
    <input id="cb" value="" type="checkbox">
    <label for="cb"><span></span> Text</label>

    使用此解决方案,您不会在所有浏览器中遇到任何问题。 它会隐藏复选框本身,但它仍然有效,因为您可以单击连接到复选框的标签。 在此标签中,您的背景图像及其大小有一个跨度。所以它看起来仍然像一个复选框,而您隐藏的复选框将被“选中”或“未选中”

    【讨论】:

      【解决方案5】:

      将此添加到您的 css 文件中:

      input[type=radio]{
          display:none;
      }
      

      【讨论】:

      • 认真的吗? display: none?
      • 感谢您的回答。 display:none 使我的复选框消失。我做错了吗?
      • @divHelper11 GLP 错误。别担心。为您提供正确的解决方案。
      • @Praveen:那你怎么看,如果我错了stackoverflow.com/questions/8528860/radio-button-styling.. 对于某些问题,我们可以有多种解决方案,我展示了我的回答方式,如果你有单独的,好,好,那别瞎说,我的回答是错的
      • @G.L.P 请使用常识。只有一个元素,&lt;input /&gt;,您将其从视图中移除。那到底会怎么显示呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 2020-09-29
      • 1970-01-01
      • 2018-11-13
      • 2023-04-07
      • 2018-05-24
      相关资源
      最近更新 更多