我所拥有的是一个表单,其中一个fieldset包含其他几个fieldset。对于每个字段集,用户可以选中图例旁边的框并展开该字段集(理论上至少)。我认为尝试使用纯CSS作为效果会很酷,但是我更加关注如何基于DOM中的两个元素位置来编写规则。这里的HTML:DOM中属性+同级的CSS规则
<fieldset id="areasofinterest">
<legend>Areas of Interest Survey</legend>
<p>Please Check The Areas Applicable to you and Answer the Coorepsonding Questions.</p>
<!--Area 1 Checkbox and Questions -->
<fieldset class="area">
<legend>
<input type="checkbox" value="area1" id="area1" />
<label for="area1"> Area 1 :</label>
</legend>
<ul>
<li>
<label for="area1_q1">Q1</label>
<input type="text" name="area1_q1" id="area1_q1" />
</li>
<li>
<label for="area1_q2">Q2</label>
<input type="text" name="area1_q2" id="area1_q2" />
</li>
</ul>
</fieldset>
<!--Area 2 Checkbox and Questions -->
<fieldset class="area">
<legend>
<input type="checkbox" value="area2" id="area2" />
<label for="other"> Area 2 :</label>
</legend>
<ul>
<li>
<label for="area2_q1">Q1</label>
<input type="text" name="area2_q1" id="area2_q1" />
</li>
<li>
<label for="area2_q2">Q2</label>
<input type="text" name="area2_q2" id="area2_q2" />
</li>
</ul>
</fieldset>
</fieldset>
起初的想法似乎有点劈十岁上下给我,但我跑它通过W3C验证,并yipiee它嵌入传说中的输入通过。所以我确信我可以在使用javascript/jquery后得到我的东西,但是我不想用CSS来做这个概念的证明,尽管旧版浏览器可能不支持它。
我想这条规则:
.area ul {
color: red;
}
.area input:checked + ul {
color: blue;
}
,但没有运气。我确认了一个简单得多的测试,我正在使用的两个浏览器(Chrome,FF 3.5)可以做input:checked + ul
,如果它只是一个输入后跟一个ul。如果我有两个规则(在简化版本中),它会切换颜色。
但我不知道是否有方法可以参考UL,如果检查的元素是在图例标记中,而不是UL的直接兄弟。有没有办法说“传奇的兄弟姐妹包含被检查的输入......”?
感谢您的帮助。
使用复选框切换面板的视图是非常规的。树形箭头(向下或侧向)更常见,或者 - 如果图例看起来是可点击的 - 只需单击图例即可切换查看。 – 2009-08-12 20:43:19