2

我有一个水平菜单的纯 CSS 实现,可以在计算机上的浏览器上正常工作。该网站是 www.intercessionsp.org。但是,在触摸设备上(特别是,我在 iPad 和 iPhone 上尝试过 Safari),菜单不起作用。如果有子菜单(主菜单项工作正常),触摸它们根本不会引起任何响应。我尝试实现两种解决方案: 1. 使用 onclick="return true",基于 terraling 在 stackoverflow 上的“iPad/iPhone Touch Event on Hover CSS”问题中的解决方案。2. 添加#ios ul { display: none; } 和 #ios li:hover ul { display: block; } 基于 Philip Renich 在 elfboy.com 上的一篇名为“让 CSS 下拉菜单在 iPhone 上工作”的帖子。都没有奏效。

这是我的css文件的相关部分:

/* horizontal menus */
#nav, .nav, #nav .nav li { 
    margin:0px; 
padding:0px; 
}
#nav li {
float:left; 
display:inline; 
cursor:pointer; 
list-style:none; 
padding:10px 30px 10px 30px; 
border:1px #000 solid;  
position:relative;
background: #990000;
}
#nav li ul.first {
left:-1px; 
top:100%;
}
li, li a {
color:#fff; 
text-decoration:none;
}
#nav .nav li { 
width:100%; 
text-indent:10px; 
line-height:30px; 
margin-right:10px; 
border-top:1px #000 solid; 
border-bottom:1px #000 solid;
border-left:none; 
border-right:none; 
background:#990000;
onclick="return true"
}
#nav li a {
display:block; 
width:inherit; 
height:inherit;
}
ul.nav { 
display:none; 
}
#nav li:hover > a, #nav li:hover { 
color:#990000; 
background:#fff; 
}
li:hover > .nav { 
display:block; 
position:absolute; 
width:200px; 
top:-2px; 
left:30%; 
z-index:1000; 
border:1px #000 solid; 
}
li:hover { 
position:relative; 
z-index:2000; 
}

#basic li {
color:#000;
}

由于我的 li:hover > .nav 中已经有 display:block,我尝试将其添加到 #nav li:hover > a, #nav li:hover (不希望这个工作)和 li:hover,但两者都没有工作。我应该补充一点,我查看了 Renich 关于设置宽度值的评论,但由于我已经设置了宽度值,这似乎没有用。

我想继续使用纯 CSS 实现。

4

1 回答 1

1

您的菜单依赖于 css 选择器:hover来显示列表项。为了让那些显示在像 iphone 这样的移动设备上,用户必须能够点击。您可以尝试使用<a>标签将菜单上第一级的文本包装起来。例如:<a href="#">About Us</a>

在移动设备上查看:

http://jsfiddle.net/tlaverdure/L42AE/

于 2012-12-24T07:34:25.637 回答