如果只有父母有同一个班级,有没有办法向孩子展示?问题的棘手部分是父母和孩子不知道他们的班级。
<div class="red">
<div class="red">red</div>
<div class="yellow">yellow</div>
<div class="blue">blue</div>
</div>
在这种情况下,我只想显示父母及其第一个孩子。但是如果我将父类从红色更改为黄色,我只想显示父类及其第二个孩子。
有可能创造出这样的东西吗?
如果只有父母有同一个班级,有没有办法向孩子展示?问题的棘手部分是父母和孩子不知道他们的班级。
<div class="red">
<div class="red">red</div>
<div class="yellow">yellow</div>
<div class="blue">blue</div>
</div>
在这种情况下,我只想显示父母及其第一个孩子。但是如果我将父类从红色更改为黄色,我只想显示父类及其第二个孩子。
有可能创造出这样的东西吗?
假设 CSS 不知道类名,您将无法单独在 CSS 中执行此操作。但是,如果它们来自一组已定义的类,您可以通过执行以下操作来完成此操作(此示例使用CSS3 :not selector):
div.red > :not(.red),
div.yellow > :not(.yellow),
div.blue > :not(.blue)
{
display: none;
}
如果您想冒险使用 JavaScript,您可以通过执行类似 ( JSFiddle ) 的操作来完成任务:
var myDiv = document.getElementById('myDiv');
for( var i=0, j=myDiv.children.length; i<j; ++i)
{
if(myDiv.children[i].className != myDiv.className)
{
myDiv.children[i].style.display = 'none';
}
}
这假定div
的 id 为myDiv
,并且元素类不包含任何其他内容。
只有事先知道这些类...
div div { display: none; }
div.yellow .yellow,
div.blue .blue,
div.red .red { display: block; }
是的,但您将需要一些额外的 CSS 类定义。尝试这样的事情:
div.red{
display:block;
}
div.red div.red{
display: block;
}
div.red div.yellow{
display: none;
}
div.red div.blue{
display: none;
}
等等......如果你不想像那样明确地写出来,唯一的方法就是javascript。 JSFIDDLE