Bootstrap 在預設中最多只有二個層級,對於架構比較大型專案中比較不能滿足。

使用 Bootstrp 框架也段時間了,久久一段時間下來都覺得只能將 Nav 做到二級,實在是真的有點弱,其實中心對網頁設計還是有很多問號,但也這些問題看到自已的不足,也在一次的機緣中決定要將 Nav 處理到可多級,符合較大型的專案開發,期中光是 CSS 的架構處理起來不只多,而產生的問題自然也就多,還好發現原來可以用 jQuery-bootstrap-submenu來處理,雖然純 CSS 的問題都處理到定位了,但還是用現成的套件比較快速,不過原理還是要好好的記清楚,這對之後的版型與功能開發自然可以更快速調整了。




1-Bootstrap 純 CSS 的三級nav-hover選單

Multi level dropdown menu in Bootstrap 3 是直接使用 CSS 彈出來的滑入選單,在行動裝置來說 Hover 行為也是點按的一個步驟,在點按 a 標籤的感應也是有作用的。

jQuery 版本:jquery-1.11.0

See the Pen Bootstrap 純 CSS 的三級nav-hover選單 by Jimmy_Wu (@Jimmy_Wu) on CodePen.light

在安卓手機上發現到 BUG ,點次次選單要展開後不只沒有展開,而是連次選單都快速收起,而 IOS 系統完全沒有這方面的問題,測了一下主要是 css hover .dropdown-submenu:hover>.dropdown-menu 所影響,在 Bootstrap 中有開合 nav (漢寶圖)是在 @media (min-width:768px) 做分界,在行動裝置的樣式中 display: block; 是要空值才會使 hover 沒作用,之後可以使用 jQuery 的 .click() 事件來控制,在專案除錯老實說也懶了…滿怕在處理 JS 的過程又發生不可控制的問題,也因此轉向找套件來處理。


2-bootstrap-submenu-jQuery-Plugin

See the Pen Bootstrap-submenu-多層開合(下拉)選單 by Jimmy_Wu (@Jimmy_Wu) on CodePen.light

在第一層下拉選單的 <a> 標籤加上 data-submenu,有子選單的 <li> 標籤加上 class="dropdown-submenu"

.dropdown-submenu 在點按後會變成 .dropdown-submenu.open,確定 .open>.dropdown-menu (比較上方純 CSS .dropdown-submenu:hover>.dropdown-menu) 內所有的層疊樣式,在 Bootstrap 裡的 .open>.dropdown-menu display: block; 會於 block 與空值間切換,這樣就可以換成除錯,另外在 jQuery 也可以寫 if 的系統判斷式,讓行動裝直帶有 data-submenu 這樣就算是安卓系統用到像 Bootstrp nav 大於 @media (min-width:768px) 的 CSS hover 也不怕出現點按的問題。


資料來源:

Multi level dropdown menu in Bootstrap 3
讓你的Bootstrap下拉選單可以支援多層選單
github-bootstrap-submenu