所选电台之后,列表中的第一个元素

时间:2019-08-22 16:25:38

标签: css queryselector

我有一个单选按钮序列,然后是其他dom元素。现在,我想隐藏除所选单选按钮之后的所有元素。

  <div id="gallery" data-role="image-slider">
        <input type="radio" />
        <div class="image-slider-element">
            <img src="" />
        </div>

        <input type="radio" />
        <div class="image-slider-element">
            <img src="" />
        </div>

        <input type="radio" checked="checked" />
        <div class="image-slider-element">
            <img src="" />
        </div>

        <input type="radio" />
        <div class="image-slider-element">
            <img src="" />
        </div>
    </div>
[data-role="image-slider"] > input[type="radio"] ~ .image-slider-element {
    display: none;
}

[data-role="image-slider"] > input[type="radio"]:checked ~ .image-slider-element {
    display: block;
}

[data-role="image-slider"] img {
    height: 400px;
}

问题是,(在这种情况下)不仅会显示第三个元素,而且还是会显示第四个元素。所以有什么主意,我如何才能在选中的元素之后立即显示该元素,而不是在此之后全部显示?

[data-role="image-slider"] > input[type="radio"]:checked ~ .image-slider-element:first-child将不起作用,因为first-child仅与第一个元素相关。

1 个答案:

答案 0 :(得分:1)

好的-抱歉,很长一段时间... +可以正常工作


[data-role="image-slider"] > input[type="radio"]:checked + .image-slider-element {
    display: block;
}