8

为什么我下面的 CSS 对我不起作用?谁能给我建议。

#slide1:checked ~ #inner { margin-left: 0;}
#slide2:checked ~ #inner { margin-left: -800px;}
#slide3:checked ~ #inner { margin-left: -1600px;}

下面的CSS确实有效。我不知道从这里去哪里。

#slide1:checked ~ #broadControl label:nth-child(1),
#slide2:checked ~ #broadControl label:nth-child(2),
#slide3:checked ~ #broadControl label:nth-child(3){
    background: #333;
    border-color: #333; !important;
}

HTML:

<div id="broadcast">
    <div id="overflow">
        <div id="inner">

            <article>
                <div class="info"></div>
                <div id="pic1"></div>
                <!--img src=""-->
            </article>
            <article>
                <div class="info"></div>
                <div id="pic2"></div>
                <!--img src=""-->
            </article>
            <article>
                <div class="info"></div>
                <div id="pic3"></div>
                <!--img src=""-->
            </article>

        </div>
    </div>
</div>

<!-- Broadcast controls -->
<input checked type="radio" name="slider" id="slide1">
<input type="radio" name="slider" id="slide2">
<input type="radio" name="slider" id="slide3">
<div id="broadControl">
    <label for="slide1"></label>
    <label for="slide2"></label>
    <label for="slide3"></label>
</div>

我正在尝试使用纯 CSS 进行幻灯片转换,以了解更多 CSS。

但是我已经在这里呆了3天了。

我不知道为什么它不起作用。

如果您有任何想法,请向我提出建议。

提前致谢。

4

1 回答 1

13
#slide1:checked ~ #broadControl label:nth-child(1)

~运算符仅适用于元素之后的元素。在这种情况下,在标签元素之后#slide1搜索,它不能在它之前搜索。#broadControl#slide1

小提琴示例:http:
//jsfiddle.net/9vxYJ/

你会在那个小提琴中看到我把你的#broadcast部分移到了broadcast controls.

另一个问题是~兄弟选择器,这意味着它只能找到同一级别的元素。但是您可以解决此问题,因为#broadcastIS 与 etc. 处于同一级别#slide1,您可以埋入#inner,如下所示:

#slide1:checked ~ #broadcast > #overflow > #inner { margin-left: 0;}
#slide2:checked ~ #broadcast > #overflow > #inner { margin-left: -800px;}
#slide3:checked ~ #broadcast > #overflow > #inner { margin-left: -1600px;}
于 2013-04-18T00:56:22.257 回答