我正在尝试使用class =" category-nav"制作子菜单。仅适用于"颜色"选项(因此它不应存在或显示任何其他选项)。
显示:无效但当我尝试使用组合兄弟选择器来显示块时,仅为选项" color"指定显示子菜单。这是行不通的。 (.add-nav #color~.category-nav {display:block})。我究竟做错了什么?还有其他方法可以用css做到这一点吗?我不希望使用JavaScript,因为页面已经是JavaScript重。
<ul class="add-nav">
<li><a href="#">shape</a></li>
<li id = "color" class="active"><a href="#">color</a></li>
<li><a href="#">pattern</a></li>
<li><a href="#">size</a></li>
<li><a href="#">overall</a></li>
</ul>
<ul class="category-nav">
<li class="active"><a href="#">all</a></li>
<li><a href="#">Red</a></li>
<li><a href="#">Orange</a></li>
<li><a href="#">Yellow</a></li>
<li><a href="#">Green</a></li>
<li><a href="#">Blue</a></li>
<li><a href="#">Purple</a></li>
</ul>
这里是css
.add-nav{
width:100%;
padding:0;
margin:10px 0 0px;
list-style:none;
border-bottom:1px solid #cecece;
display:table;
text-transform:uppercase;
font-size:10px;
line-height:14px;
}
.add-nav li{
text-align:center;
display:table-cell;
vertical-align:bottom;
}
.add-nav li a{
display:block;
padding:21px 5px 16px;
color:#636363;
}
.add-nav li a:hover,
.add-nav .active a{
font-weight:700;
text-decoration:none;
color:#272727;
background:#f2f2f2;
}
.category-nav{
padding:5px 13px 7px;
margin:0 0 0px;
list-style:none;
background:#f2f2f2;
width:100%;
font-size:10px;
font-variant:small-caps;
display:table;
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
}
.category-nav li{
text-align:center;
display:table-cell;
vertical-align:bottom;
}
.category-nav li a{color:#636363;}
.category-nav li a:hover{
text-decoration:none;
color:#ff6699;
}
\\.category-nav{
display:none;\\
}
.category-nav .active a{
color:#ff6699;
font-weight:700;
}
以下是JS Fiddle
中的代码答案 0 :(得分:0)
您正在寻找的是一个CSS父选择器,doesn't exist。
您的代码说:
.add-nav li.active #color ~ .category-nav // I added the .active class
这实际上是选择与#color
匹配的.category-nav
的所有兄弟姐妹。现在,.category-nav
不是#color
的兄弟;它是.add-nav
的兄弟姐妹。您 想要做的是选择.add-nav
的兄弟姐妹...但仅当包含 li.active #color
时。换句话说,你想要定义一些东西,然后选择,而不是东西本身,而是它的父亲。这是不可能的,并且有一个有趣的讨论为什么它不被允许here。基本上,这种类型的东西会在浏览器中引入巨大的性能问题。
但是,您必须使用某些Javascript将active
课程应用到<li>
中的每个.add-nav
。只需要几行代码来检查点击了哪个链接,并根据它显示/隐藏您的.category-nav
。在我看来,这是最好的方式。