2012-07-26 48 views
0

我在我的網站上有這個導航欄,它不會在我的iPod touch上下拉,我懷疑iPhones和iPad也是如此。 This is one of the pages基於觸摸設備的下拉菜單

我想知道是否有任何快速修復來啓用觸摸/懸停。

CSS

+0

與您的問題沒有關係,但在IE8中,「ORHS基金會」的頂部一行文字略微被您的標題覆蓋。 – Jeremy1026 2012-07-26 12:54:23

+0

作爲一個方面說明,你應該讓你的頁面頂部橫幅更小(目前它的9514 x 1732) – vimist 2012-07-26 12:56:26

回答

4

如果你有興趣的iDevices,那麼你可以使用這一招:

#nav ul { 
display: none; 
/* Your styles */ 
} 
#nav > li:hover ul { 
display: block; 
} 
/* This is important */ 
#nav > li > a:hover { 
color: #fff; /* You can set the same color or add other style.*/ 
} 

如果一個元素的:hover事件,則第一次輕觸的iOS呈現:hover第二接頭引發Click事件。

這應該工作。

P.S.最好爲移動設備,觸摸和桌面製作不同的UI邏輯。

+0

謝謝!它的工作 – user1533928 2012-07-27 16:09:20

4

有一個關於一個很好的文章在這裏 - http://www.nczonline.net/blog/2012/07/05/ios-has-a-hover-problem/

我建議使用Modernizr因爲它提供了你可以使用觸摸屏設備無觸摸CSS類,或者您可以使用JavaScript檢測懸停並向您的元素添加一個類。

if (!("ontouchstart" in document.documentElement)) { 
    document.documentElement.className += " no-touch"; 
} 
+0

這對我來說工作完美無瑕。 – philwinkle 2012-08-21 18:28:28

3

最優雅的解決方案我已經遇到是Osvaldas Valutis

他的方法是一個非常微小的jQuery插件檢測與下拉菜單UL導航列表項目的觸摸事件。

例如,您可能您的導航標記是這樣的:

<nav id="nav-primary"> 
    <ul> 
     <li><a href="/">Home</a></li> 
     <li><a href="/about/">About</a> 
      <ul> 
       <li><a href="/about/index.html">Dropdown item 1</a></li> 
       <li><a href="/about/page.html">Dropdown item 2</a></li> 
      </ul> 
     </li> 
    </ul> 
</nav> 

你再調用插件使用jQuery的一行,像這樣:

$('#nav-primary li:has(ul)').doubleTapToGo(); 

這保證了首頁鏈接在上面的例子中仍然按預期工作,因爲它沒有下拉菜單。唯一的(非常小的)缺點是在下拉列表中的第一個鏈接上有一點冗餘,但這並沒有什麼影響。

+0

我不知道有多少人會明白需要雙擊。網絡教會了我們所有人,雙擊是桌面行爲。而單擊(或點擊)則是網絡行爲。 – 2015-11-17 22:21:02

+0

我相信這種技術對於大多數用戶來說是非常難以發現的 – 2015-11-17 22:22:01