我所拥有的是一个表单,其中一个字段集包含几个其他字段集。对于每个字段集,用户可以选中图例旁边的框并展开该字段集(至少在理论上)。我认为尝试使用纯 CSS 来实现效果会很酷,但我对如何根据 DOM 中的两个元素位置来编写规则感到困惑。这是HTML:
<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 的直接兄弟。有没有办法说“包含经过检查的输入的传说的兄弟姐妹......”?
谢谢您的帮助。