【发布时间】:2015-01-17 09:16:30
【问题描述】:
根据本网站http://osvaldas.info/drop-down-navigation-responsive-and-touch-friendly 上给出的代码,很容易创建一个简单的 CSS 下拉菜单,它具有响应性并且适用于触摸设备。
但是,代码包含指向导航的锚链接,因此如果导航不在页面顶部(而我的不在 - 上面有一个徽标),浏览器会向下滚动到导航。这令人不安,而不是我想要的。必须有一种方法可以在不向下滚动浏览器的情况下使其工作?
我已将代码放在 JSF Fiddle 此处 http://jsfiddle.net/Ltebg0ah/ 及以下。
问题与此有关(来自 Osvaldas 网站的文本): CSS 伪选择器 :target 可以轻松切换菜单,因为锚点的 href 属性与 CSS ID 选择器名称一致。因此,您可能已经理解,#nav > a 的第一个锚点负责显示,第二个锚点负责隐藏菜单。
<div class="header"></div>
<nav id="nav">
<a href="#nav" title="Show navigation">Menu</a>
<a href="#" title="Hide navigation">Close Menu</a>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="workshops.html">Workshops</a></li>
<li><a href="about.html">About</a></li>
<li><a href="news.html">News</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
<div class="content">
.header {
height:200px;
background-color:brown;
}
.content {
height:1000px;
background-color:green;
}
#nav > a
{
display: none;
}
#nav
{
position: relative;
}
#nav > a
{
}
#nav:not( :target ) > a:first-of-type,
#nav:target > a:last-of-type
{
display: block;
}
/* first level */
#nav > ul
{
height: auto;
display: none;
position: absolute;
left: 0;
right: 0;
}
#nav:target > ul
{
display: block;
}
#nav > ul > li
{
width: 100%;
float: none;
}
【问题讨论】:
-
这是不可能的,因为当#nav 为目标时菜单会打开。不使用JS是不可能做到的。
标签: css