css - 有没有办法使用 CSS 来显示/隐藏非兄弟元素?

标签 css

我有一些单选选项,其中包含我想显示/隐藏的类。我有一些具有这些类的 div。

HTML:

<input type="radio" class="one radioselect" value="one" id="one" name="opts" /> <label for="one" class="select radlabel">one</label>
<input type="radio" class="two radioselect" value="two" id="two" name="opts" /> <label for="two" class="select radlabel">two</label>

<div class="one">abc</div>
<div class="two">def</div>

CSS:

input.one:checked ~ a.one { display:inline; }
input.two:checked ~ a.two { display:inline; }

input.one:checked ~ a:not(.one) { display:none; }
input.two:checked ~ a:not(.two) { display:none; }

现在我的标记必须是这样的:

<div class="row">
<input type="radio" class="one radioselect" value="one" id="one" name="opts" /> <label for="one" class="select radlabel">one</label>
<input type="radio" class="two radioselect" value="two" id="two" name="opts" /> <label for="two" class="select radlabel">two</label>
</div>

<div class="one">abc</div>
<div class="two">def</div>

新的标记意味着输入不再是 div 的兄弟,并且不再应用 CSS(据我所知)。 我已经尝试了所有我能想到的选择器组合,也许这对于纯 CSS 是不可能的。我的目标是在 CSS 可以工作的地方避免使用 javascript。如果这是一个解决方案,我愿意研究 SASS/LESS。

最佳答案

我已经重新排列了您的 HTML 以获得您想要的功能。首先,我重命名了要显示和隐藏它们的 div 上的类。

.three { display:none; }
.four { display:none; }

接下来创建逻辑,当单选按钮被选中时显示一个 div。

input.one[type=radio]:checked ~ .three { display:block; }
input.two[type=radio]:checked ~ .four { display:block; }

现在一旦编译成一个它应该如下所示:

.three { display:none;color:#ff0000;}
.four { display:none;color:#FF8C00;}

input.one[type=radio]:checked ~ .three { display:block; }
input.two[type=radio]:checked ~ .four { display:block; }
<div class="row">
<input type="radio" class="one radioselect" value="one" id="one" name="opts" /> <label for="one" class="select radlabel">Radio one</label>
<input type="radio" class="two radioselect" value="two" id="two" name="opts" /> <label for="two" class="select radlabel">Radio two</label>

<div class="three">Radio one DIV</div>
<div class="four">Radio two DIV</div>


</div>

让我知道这是否适合您。

关于css - 有没有办法使用 CSS 来显示/隐藏非兄弟元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195067/

相关文章:

css - 如何在 Angular 元素中包含字体?

css - 为不同客户定制的 Rails 应用程序

javascript - 如何在 jQuery 单击事件期间检索列表项的子位置?

javascript - 更改 JQuery 选项卡 slider 上的图像大小

objective-c - 在 iPad 应用程序中包含同一系列的多种字体

javascript - 通过 JavaScript 有条件地更改 css 不起作用

html - 粘性页脚(不固定)隐藏主要内容

css - 如何选择表中的最后一个行跨度?

javascript - 如何在鼠标悬停时突出显示 div 中的链接

jquery - 检查 Jquery 是否存在相似(但不完全)的类