先前梅干曾分享過,將Bootstrap的導覽列透過CSS設定後,將click點擊開啟選單變成hover滑入展開,但這樣的第一層選單都無法有連結效果,必需在第二層才能連結,這對於有些朋友若把第一層設為大分類時,就無法展開。
所以梅干最近就花了點時間,將Bootstrap的導覽列再作擴充,讓它在電腦版時,滑入選單可以展開子選單,當點擊第一層選單連結時,則會開啟連結, 若在手機版時,則會變成點選的方式,當點後方的三角形則是展開選單,點前方的選單名稱,則會開啟連結,如此一來就更符合大家的使用經驗,至於要怎麼來修改呢?有在使用Bootstrap的朋友,也一塊來看看囉!
Step1
加入CSS樣式,當在螢幕解晰小於480時,就套用此樣式,而此樣式是將原來的倒三角形,加入一些效果。
/當視窗小於480時,套用此樣式/ @media (max-width: 480px) { .caret::before{ content: ‘▾’; color: #fff; font-size: 24px; line-height: 28px; } .caret{ display: inline-block; text-align: center; float: right; width: 50px; height: 30px; background: #111; border: 0; margin-right: -10px; border-radius: 30px; margin-top: -5px; } .dropdown-menu{ position: relative; width: 100%; background: transparent; } .dropdown-menu>li>a{ color: #9d9d9d; } }
Step2
加入javascript控制,在電腦版時,滑入時展開,同時第一層也支援可連結,當在手機版時,點選倒三角形展開選單,點選單名稱,則會開啟連結。
$(function(){ $(‘ul.nav li.dropdown>a’).click(function(){ location.href = $(this).attr(‘href’); });$('.caret').click(function(){ $(this).parent().next('ul').slideToggle(); $(this).parent().parent().addClass('dropdown'); $(this).parent().parent().toggleClass('open'); return false; }); //當視窗大於480時,滑入展開選單 if($(window).width() > 480){ $('ul.nav li.dropdown').hover(function() { $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(500); }, function() { $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut(500); }); }
});
Step3
完成後,在電腦時,滑入選單時就會展開子選單,當點擊選單則會開啟連結。
Step4
當在手機模式下時,點選後方的倒三角形則會開啟選單。
Step5
點選單名稱時,則會開啟連結,這樣就更符合一般的操控習慣,有在使用bootstrap的朋友,也趕快試試囉!
[範例預覽] [範例下載]