我试图创建一个面包屑导航一个多层次的菜单,无需使用JavaScript。我遇到过大量纯粹的css菜单和面包屑,但从未组合过并且一起工作。下面是我想要实现(点击“更多”汉堡包菜单上)设计:纯CSS多层次的菜单与功能痕迹导航
而且这是我迄今为止在我的HTML/CSS(见下codepen链接) 。请原谅粗俗/哈克代码。在这一点上,我只是在测试想法,一旦找到解决方案,我将简化和美化我的代码。
http://codepen.io/jessbenz/pen/LZWjjz
这里的代码片段,但请看看codepen以上链接,以获得更好的手感:
<div class="smart-nav">
<input type="radio" id="bread-home" class="breadcrumb" name="bread" />
<input type="radio" id="bread-women" class="breadcrumb" name="bread" />
<input type="radio" id="bread-womens-clothing" class="breadcrumb" name="bread" />
<div class="smart-nav-panels">
<ul id="home">
<li>
<input type="radio" name="first">
<label>1 Women</label>
<ul id="women">
<li>
<input type="radio" name="second">
<label>1.1 Women's Clothing</label>
<ul id="womens-clothing">
<li>
<label>1.1.1 Women's Shirts</label>
</li>
</ul>
</li>
</ul>
</li>
<li>
<input type="radio" name="first">
<label>2 Men</label>
<ul id="men">
<li>2.1 Men's Shirts</li>
</ul>
</li>
</ul>
</div>
</div>
和我顶嘴:
.breadcrumb:checked ~ .smart-nav-panels ul {
display: none;
}
#bread-home:checked ~ .smart-nav-panels > ul {
display: block;
}
#bread-women:checked ~ .smart-nav-panels {
#home, #women {
display: block;
}
}
#bread-womens-clothing:checked ~ .smart-nav-panels {
#home, #women, #womens-clothing {
display: block;
}
}
#bread-home:checked ~ .smart-nav-panels li input:checked > ul:first-child {
display: block;
}
.smart-nav-panels {
margin: 0;
padding: 0;
ul {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
background: lightgrey;
}
ul, li {
list-style: none;
margin: 0;
padding: 0;
}
> ul:first-child {
ul {
left: 100%;
}
}
li {
input + label + ul {
display: none;
}
input:checked + label + ul {
display: block;
// left:0;
}
}
}
input:checked ul {
display: block;
}
如果您通过点击我的代码样本中的女士服装,你会看到我已经完成了我所需要的一半。顶部水平单选按钮表示灰色块内的面包屑和垂直单选按钮表示层菜单。问题出现在我选择面包屑收音机时。显示正确的幻灯片,但然后,如果我再在菜单中选择一台收音机,它没有显示,因为我的面包屑的CSS正在偏好和隐藏的相关内容。我想这里是不使用JavaScript的问题。如何让我的导航能够使用纯CSS来识别对方?这种结合两种无线电导航的方法可能是不正确的。我真的希望有人能分享他们的智慧。 :)
在此先感谢
谢谢你的彻底的和有用的回复。我说这很有用,因为它让我(现在)不再在这个兔子洞里花费更多的时间。我们怀疑没有Javascript就无法做到这一点。尽管这是一个有趣的挑战,我希望结果对其他人有些用处。也感谢提高我的CSS。 :) –