试图在同一页面上使用CSS Multiple Checkbox Hack

时间:2013-12-03 00:19:21

标签: css html5 checkbox

我正在尝试利用CSS复选框hack来切换显示:无和显示:阻止一个页面的多个部分。我有按年份分割的图像库集并开始隐藏,并且希望能够单击年份来切换特定图库的显示。我坚持的一点是,每当我点击其中一个标签时,它下面的所有内容都会切换,而不仅仅是我试图专门切换的标签中包含的部分。

这是我到目前为止所拥有的。

CSS代码

.hide {
    display:none;
}

input[type=checkbox] {
    position: absolute;
    top: -9999px;
    left: -9999px;
}

input[type=checkbox]:checked ~ .hide {
    display:block;
}

label {
    display: block;
    background: white;
    padding: 5px;
    border: 0px solid rgba(0,0,0,.1);
    border-radius: 2px;
    color: black;
    font-weight: bold;
}

和HTML

<input type="checkbox" id="toggle_2012">
<label for="toggle_2012">2012</label><br>
<div class="hide">
<a class="fancybox" rel="2012" href="imgs/fb/3_b.jpg"><img src="imgs/fb/3_s.jpg" alt="Image 3"/></a> 
<a class="fancybox" rel="2012" href="imgs/fb/4_b.jpg"><img src="imgs/fb/4_s.jpg" alt="Image 4"/></a> 
</div>

<input type="checkbox" id="toggle_2013">
<label for="toggle_2013">2013</label><br>
<div class="hide">
<a class="fancybox" rel="2013" href="imgs/fb/1_b.jpg"><img src="imgs/fb/1_s.jpg" alt="Image 1"/></a>
<a class="fancybox" rel="2013" href="imgs/fb/2_b.jpg"><img src="imgs/fb/2_s.jpg" alt="Image 2"/></a> 
</div>  

(Jquery / Fancybox用于显示图像,这就是为什么它们被归类为Fancybox)

非常感谢任何帮助。这是我第一次使用复选框hack,但据我所知,输入/标签的唯一ID应该有效。不知道我在这里缺少什么。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您的css selector ~会影响该课程的每个后续元素。尝试:

input[type=checkbox]:checked + label + .hide

您可能需要删除<br>才能生效。

答案 1 :(得分:-1)

这是几个月了,可能你现在找到了你的解决方案,但是为了找到这个主题的人的利益,这是我的解决方案。首先,你给复选框一个ID是正确的(CLASS在某些情况下也可以工作),但你必须在你的CSS中实际引用该ID。

而不是:

input[type=checkbox]:checked ~ .hide {
    display:block;
}

试试这个:

#toggle_2013:checked ~ .hide {
    display:block;
}

如果没有专门识别CSS中的复选框以及HTML中的复选框,DOM中的第一个合适的复选框将被激活而不是您想要的复选框。

希望这有帮助。