2012-11-17 133 views
2

我有一個純CSS的水平菜單實現,可以在計算機上的瀏覽器上正常工作。該網站是www.intercessionsp.org。但是,在觸控設備上(具體來說,我嘗試過在iPad和iPhone上使用Safari),菜單不起作用。如果有子菜單(主菜單項正常工作),觸摸它們完全不會引起任何反應。我試圖實現兩個解決方案: 1.使用onclick =「返回true」,基於terraling在「懸停CSS上的iPad/iPhone觸摸事件」中的解決方案。 2.添加#ios ul {display:none; }和#ios li:hover ul {display:block; }根據Philip Renich在elfboy.com上發佈的一篇文章「讓CSS下拉菜單在iPhone上工作」。 都沒有工作。CSS水平菜單不適用於觸摸設備

這裏是我的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; 
} 

因爲我已經有顯示:塊在我李:懸停> .nav,我嘗試添加它來#nav李:懸停>一, #nav li:懸停(沒有期待這個工作)並且對li:懸停,但都沒有工作。我應該補充一點,我查看了Renich對設置寬度值的評論,但由於我已經設置了寬度值,這看起來沒有用處。

我想留在一個純粹的CSS實現。

回答

1

您的菜單依賴於css選擇器:hover以顯示列表項。爲了讓這些用戶像iphone一樣在移動設備上顯示,用戶必須能夠點擊。您可以嘗試使用<a>標籤在菜單的第一級上包裝文本。例如:<a href="#">About Us</a>

查看這在移動設備上:

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

+0

這完美。謝謝。謝謝。謝謝! – BillInPoint

+0

請檢查答案,因爲它是正確的。謝謝。 – tlaverdure