10

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

<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] 幽灵

[ ] 怪物

我想做的是让复选框成为一个大按钮,里面有值。然后让它有一个“切换”的效果。

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

我该怎么做呢?

4

5 回答 5

9

看看这个_

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。

于 2013-03-15T15:56:35.747 回答
7

这可以使用复选框和标签、相邻的兄弟选择器以及 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-framework-of-your-choice}-plugins 可以帮助实现相同的效果。

于 2013-03-15T15:52:34.803 回答
3

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

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

于 2013-03-15T15:45:40.580 回答
1

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

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

于 2013-03-15T15:49:57.167 回答
0

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

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

于 2013-03-15T15:49:02.590 回答