First-child 和 last-child 在不同的容器中
First-child and last-child in separate containers
我可以将 first-child 和 last-child 伪元素应用于具有相同 class 而不同 sub-containers 的 div 吗?在下面的示例中,div 和 classes "box selected" 都存储在“1st-container”下,但途中还有 2 个额外的容器:
<div class="1st-container">
<div class="2nd-container">
<div class="3rd-container">
<div class="box selected"> // this div should have first-child pseudo elements
<div class="box">
</div>
</div>
<div class="2nd-container">
<div class="3rd-container">
<div class="box selected">
<div class="box">
<div class="box">
<div class="box">
</div>
</div>
<div class="2nd-container">
<div class="3rd-container">
<div class="box selected"> // this div should have last-child pseudo
<div class="box">
</div>
</div>
</div>
纯 css 可行吗?
您无法执行您所描述的操作,因为在这两种情况下,"box selected"
都是其父项的第一个子项。不过,您可以采取不同的方法。例如,您可以像这样定位这两个 div:
.2nd-container:first-child .selected,
.2nd-container:last-child .selected
{}
如前所述,请将 2
替换为非数字,因为那样行不通。我被主要问题分心了。 :-)
首先,您不能使用数字作为 类 或 ID 的开头。
其次,你只需要在第二个元素的第一个和最后一个子元素上做一个查找,你应该能够找到你需要的元素。
.box {
height: 20px;
width: 400px;
background: blue;
}
.box.selected {
background: red;
}
.two-container:first-child .box.selected,
.two-container:last-child .box.selected {
background: green;
}
<div class="one-container">
<div class="two-container">
<div class="three-container">
<div class="box selected">// this div should have first-child pseudo elements</div>
<div class="box"></div>
</div>
</div>
<div class="two-container">
<div class="three-container">
<div class="box selected"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
<div class="two-container">
<div class="three-container">
<div class="box selected">// this div should have last-child pseudo</div>
<div class="box"></div>
</div>
</div>
</div>
使用 JS 看起来比 CSS 更容易:
var selected = document.querySelectorAll('.one-container .box.selected');
selected[0].style.background = selected[selected.length-1].style.background='green';
FIDDLE
我可以将 first-child 和 last-child 伪元素应用于具有相同 class 而不同 sub-containers 的 div 吗?在下面的示例中,div 和 classes "box selected" 都存储在“1st-container”下,但途中还有 2 个额外的容器:
<div class="1st-container">
<div class="2nd-container">
<div class="3rd-container">
<div class="box selected"> // this div should have first-child pseudo elements
<div class="box">
</div>
</div>
<div class="2nd-container">
<div class="3rd-container">
<div class="box selected">
<div class="box">
<div class="box">
<div class="box">
</div>
</div>
<div class="2nd-container">
<div class="3rd-container">
<div class="box selected"> // this div should have last-child pseudo
<div class="box">
</div>
</div>
</div>
纯 css 可行吗?
您无法执行您所描述的操作,因为在这两种情况下,"box selected"
都是其父项的第一个子项。不过,您可以采取不同的方法。例如,您可以像这样定位这两个 div:
.2nd-container:first-child .selected,
.2nd-container:last-child .selected
{}
如前所述,请将 2
替换为非数字,因为那样行不通。我被主要问题分心了。 :-)
首先,您不能使用数字作为 类 或 ID 的开头。
其次,你只需要在第二个元素的第一个和最后一个子元素上做一个查找,你应该能够找到你需要的元素。
.box {
height: 20px;
width: 400px;
background: blue;
}
.box.selected {
background: red;
}
.two-container:first-child .box.selected,
.two-container:last-child .box.selected {
background: green;
}
<div class="one-container">
<div class="two-container">
<div class="three-container">
<div class="box selected">// this div should have first-child pseudo elements</div>
<div class="box"></div>
</div>
</div>
<div class="two-container">
<div class="three-container">
<div class="box selected"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
<div class="two-container">
<div class="three-container">
<div class="box selected">// this div should have last-child pseudo</div>
<div class="box"></div>
</div>
</div>
</div>
使用 JS 看起来比 CSS 更容易:
var selected = document.querySelectorAll('.one-container .box.selected');
selected[0].style.background = selected[selected.length-1].style.background='green';