样式复选框为切换按钮

时间:2013-03-15 15:40:23

标签: html css checkbox toggle

在我的网站上,用户可以使用一些预设标签发布文章并相应地标记它们。这些标签采用复选框的形式。示例如下:

<input type="checkbox" name="wpuf_post_tags[]" class="new-post-tags" value="Aliens" /> Aliens
<input type="checkbox" name="wpuf_post_tags[]" class="new-post-tags" value="Ghosts" /> Ghosts
<input type="checkbox" name="wpuf_post_tags[]" class="new-post-tags" value="Monsters" /> Monsters

您可能知道,复选框看起来像这样:

  

[]外星人

     

[o] Ghosts

     

[]怪物

我想要的是将复选框设置为一个大按钮,其中包含值。然后让它具有“切换”效果。

  

[外星人] [幽灵] [怪物]

我将如何做到这一点?

5 个答案:

答案 0 :(得分:8)

检查this

<强> HTML

<input id="chk_aliens" type="checkbox" name="wpuf_post_tags[]" class="vis-hidden new-post-tags" value="Aliens" />
<label for="chk_aliens">Aliens</label>

<input id="chk_ghosts" type="checkbox" name="wpuf_post_tags[]" class="vis-hidden new-post-tags" value="Ghosts" />
<label for="chk_ghosts">Ghosts</label>

<input id="chk_monsters" type="checkbox" name="wpuf_post_tags[]" class="vis-hidden new-post-tags" value="Monsters" />
<label for="chk_monsters">Monsters</label>

<强> CSS

.vis-hidden {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

label {
  margin: 10px;
  padding: 5px;
  border: 1px solid gray;
}

input:focus + label {
  border-color: blue;
}

input:checked + label {
  border-color: red;
}

input:focus:checked + label {
  border-color: green;
}

请注意,最后一个选择器可能无法在较旧的IE中使用。

答案 1 :(得分:6)

这可以使用复选框和标签,相邻的兄弟选择器和CSS3 :selected伪类来完成。

HTML:

<span><input type="checkbox" id="c1"><label for="c1">[ Aliens ]</label></span>
<span><input type="checkbox" id="c2"><label for="c2">[ Ghosts ]</label></span>
<span><input type="checkbox" id="c3"><label for="c3">[ Monsters ]</label></span>

CSS:

input { display:none; }
input:checked ~ label { color:red; }

http://jsfiddle.net/drTg2/

但请注意,在旧版浏览器中这很容易失败 - 因为他们不知道~:checked。较旧的IE在复选框设置为display:none时出现问题 - 在提交表单时不会传输它们(尽管可以通过其他隐藏方式克服,例如屏幕的绝对定位)。

如果您不坚持使用纯HTML / CSS解决方案 - 那里有许多脚本/ {js-frame-of-your-choice} -plugins,这有助于达到同样的效果。

答案 2 :(得分:3)

Checkboxesradio按钮和SELECT元素的样式功能非常有限,并且它们在不同浏览器中的差异很大。

最好使用样式化链接或按钮完成这些操作,然后使用JavaScript设置实际的开/关外观和表单值。

答案 3 :(得分:1)

您可以借鉴page的想法!尝试绑定您的文本和复选框。然后尝试使用jquery“切换”与复选框关联的标签。

然后,您可以使用样式和图像使标签看起来像复选框的容器。这就是我要做的。

答案 4 :(得分:0)

您可以尝试使用javascript onclick事件来更改img source属性。然后,将隐藏的控件放在给定的id并在同一onclick事件中使用document.getElementById('hiddencontrol').value = 1 - document.getElementById('hiddencontrol').value(默认为0或1)。

但是,我不知道如何在没有Javascript的情况下制作它。