使用图像而不是单选按钮

Vig*_*ani 146 html css

如果我有一个带按钮的广播组:

图片1

...如何在选择选项中仅显示图像而不是按钮,例如

在此输入图像描述

Rok*_*jan 349

  • 无线电图像<label>
  • 隐藏单选按钮(不要使用display:nonevisibility:hidden因为这样会影响可访问性)
  • 使用Adjacent sibling selector选择隐藏无线电旁边的图像 +

/* HIDE RADIO */
[type=radio] { 
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

/* IMAGE STYLES */
[type=radio] + img {
  cursor: pointer;
}

/* CHECKED STYLES */
[type=radio]:checked + img {
  outline: 2px solid #f00;
}
Run Code Online (Sandbox Code Playgroud)
<label>
  <input type="radio" name="test" value="small" checked>
  <img src="http://placehold.it/40x60/0bf/fff&text=A">
</label>

<label>
  <input type="radio" name="test" value="big">
  <img src="http://placehold.it/40x60/b0f/fff&text=B">
</label>
Run Code Online (Sandbox Code Playgroud)

不要忘记在标签中添加一个,而在CSS中使用该类.


自定义样式和动画

这是使用<i>元素和:after伪的高级版本:

CSS自定义收音机和复选框

body{color:#444;font:100%/1.4 sans-serif;}


/* CUSTOM RADIO & CHECKBOXES
   http://stackoverflow.com/a/17541916/383904 */
.rad,
.ckb{
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}
.rad > input,
.ckb > input{ /* HIDE ORG RADIO & CHECKBOX */
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
/* RADIO & CHECKBOX STYLES */
/* DEFAULT <i> STYLE */
.rad > i,
.ckb > i{ 
  display: inline-block;
  vertical-align: middle;
  width:  16px;
  height: 16px;
  border-radius: 50%;
  transition: 0.2s;
  box-shadow: inset 0 0 0 8px #fff;
  border: 1px solid gray;
  background: gray;
}
/* CHECKBOX OVERWRITE STYLES */
.ckb > i {
  width: 25px;
  border-radius: 3px;
}
.rad:hover > i{ /* HOVER <i> STYLE */
  box-shadow: inset 0 0 0 3px #fff;
  background: gray;
}
.rad > input:checked + i{ /* (RADIO CHECKED) <i> STYLE */
  box-shadow: inset 0 0 0 3px #fff;
  background: orange;
}
/* CHECKBOX */
.ckb > input + i:after{
  content: "";
  display: block;
  height: 12px;
  width:  12px;
  margin: 2px;
  border-radius: inherit;
  transition: inherit;
  background: gray;
}
.ckb > input:checked + i:after{ /* (RADIO CHECKED) <i> STYLE */
  margin-left: 11px;
  background:  orange;
}
Run Code Online (Sandbox Code Playgroud)
<label class="rad">
  <input type="radio" name="rad1" value="a">
  <i></i> Radio 1
</label>
<label class="rad">
  <input type="radio" name="rad1" value="b" checked>
  <i></i> Radio 2
</label>

<br>

<label class="ckb">
  <input type="checkbox" name="ckb1" value="a" checked>
  <i></i> Checkbox 1
</label>
<label class="ckb">
  <input type="checkbox" name="ckb2" value="b">
  <i></i> Checkbox 2
</label>
Run Code Online (Sandbox Code Playgroud)

  • 对于伪选择器+1,我想我过去曾使用JavaScript来检查选中的!那会教我... (10认同)
  • 迟到了,但要小心这一点."可见性:隐藏"将隐藏屏幕阅读器的输入,并且从可访问性的角度来看是一个很大的禁忌. (3认同)
  • 隐藏可见性意味着它不可点击,并且绝对位置将其从文档流中取出 (2认同)

Ric*_*ina 86

例:

当心!此解决方案仅限CSS.

信用卡选择器,模拟演示中的万事达卡徘徊.

我建议您通过使用CSS3规则隐藏默认输入单选按钮来利用CSS3来做到这一点:

.options input{
    margin:0;padding:0;
    -webkit-appearance:none;
       -moz-appearance:none;
            appearance:none;
}
Run Code Online (Sandbox Code Playgroud)

我几天前就做了一个例子.


小智 17

您可以使用CSS.

HTML(仅用于演示,可自定义)

<div class="button">
    <input type="radio" name="a" value="a" id="a" />
    <label for="a">a</label>
</div>
<div class="button">
    <input type="radio" name="a" value="b" id="b" />
    <label for="b">b</label>
</div>
<div class="button">
    <input type="radio" name="a" value="c" id="c" />
    <label for="c">c</label>
</div>
...
Run Code Online (Sandbox Code Playgroud)

CSS

input[type="radio"] {
    display: none;
}
input[type="radio"]:checked + label {
    border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Moa*_*han 5

使单选按钮保持隐藏状态,并在单击图像时,使用JavaScript选择它们并设置图像样式,使其看起来像被选中。这是标记-

<div id="radio-button-wrapper">
    <span class="image-radio">
        <input name="any-name" style="display:none" type="radio"/>
        <img src="...">
    </span>
    <span class="image-radio">
        <input name="any-name" style="display:none" type="radio"/>
        <img src="...">
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

和JS

 $(".image-radio img").click(function(){
     $(this).prev().attr('checked',true);
 })
Run Code Online (Sandbox Code Playgroud)

的CSS

span.image-radio input[type="radio"]:checked + img{
    border:1px solid red;
}
Run Code Online (Sandbox Code Playgroud)


Cra*_*lWS 5

只是使用一个类来只隐藏一些......基于/sf/answers/1227934151/

/* HIDE RADIO */
.hiddenradio [type=radio] { 
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

/* IMAGE STYLES */
.hiddenradio [type=radio] + img {
  cursor: pointer;
}

/* CHECKED STYLES */
.hiddenradio [type=radio]:checked + img {
  outline: 2px solid #f00;
}
Run Code Online (Sandbox Code Playgroud)
<div class="hiddenradio">
<label>
  <input type="radio" name="test" value="small" checked>
  <img src="http://placehold.it/40x60/0bf/fff&text=A">
</label>

<label>
  <input type="radio" name="test" value="big">
  <img src="http://placehold.it/40x60/b0f/fff&text=B">
</label>
</div>

<div class="">
<label>
  <input type="radio" name="test" value="small" checked>
  <img src="http://placehold.it/40x60/0bf/fff&text=A">
</label>

<label>
  <input type="radio" name="test" value="big">
  <img src="http://placehold.it/40x60/b0f/fff&text=B">
</label>
</div>
Run Code Online (Sandbox Code Playgroud)