這是一款效果非常酷的jQuery和css3垂直手風琴摺疊選單外掛。外掛中使用了 Font Awesome Icons 字型圖示。
線上預覽 下載
HTML結構
html結構使用無序列表,每一個列表項作為一個選單項使用。
<!-- Contenedor --> < ul id = "accordion" class = "accordion" > < li > < div class = "link" >< i class = "fa fa-paint-brush" ></ i >Diseño web< i class = "fa fa-chevron-down" ></ i ></ div > < ul class = "submenu" > < li >< a href = "#" >Photoshop</ a ></ li > < li >< a href = "#" >HTML</ a ></ li > < li >< a href = "#" >CSS</ a ></ li > < li >< a href = "#" >Maquetacion web</ a ></ li > </ ul > </ li > < li > < div class = "link" >< i class = "fa fa-code" ></ i >Desarrollo front-end< i class = "fa fa-chevron-down" ></ i ></ div > < ul class = "submenu" > < li >< a href = "#" >Javascript</ a ></ li > < li >< a href = "#" >jQuery</ a ></ li > < li >< a href = "#" >Frameworks javascript</ a ></ li > </ ul > </ li > < li > < div class = "link" >< i class = "fa fa-mobile" ></ i >Diseño responsive< i class = "fa fa-chevron-down" ></ i ></ div > < ul class = "submenu" > < li >< a href = "#" >Tablets</ a ></ li > < li >< a href = "#" >Dispositivos mobiles</ a ></ li > < li >< a href = "#" >Medios de escritorio</ a ></ li > < li >< a href = "#" >Otros dispositivos</ a ></ li > </ ul > </ li > < li >< div class = "link" >< i class = "fa fa-globe" ></ i >Posicionamiento web< i class = "fa fa-chevron-down" ></ i ></ div > < ul class = "submenu" > < li >< a href = "#" >Google</ a ></ li > < li >< a href = "#" >Bing</ a ></ li > < li >< a href = "#" >Yahoo</ a ></ li > < li >< a href = "#" >Otros buscadores</ a ></ li > </ ul > </ li > </ ul > |
CSS樣式
下面來給手風琴摺疊選單新增一些樣式。
* { margin : 0 ; padding : 0 ; -webkit- box-sizing : border-box; -moz- box-sizing : border-box; box-sizing : border-box; } body { background : #2d2c41 ; font-family : 'Open Sans' , Arial , Helvetica , Sans-serif , Verdana , Tahoma ; } ul { list-style-type : none ; } a { color : #b63b4d ; text-decoration : none ; } /** ======================= * Contenedor Principal ===========================*/ .accordion { width : 100% ; max-width : 360px ; margin : 30px auto 20px ; background : #FFF ; -webkit- border-radius : 4px ; -moz- border-radius : 4px ; border-radius : 4px ; } .accordion .link { cursor : pointer ; display : block ; padding : 15px 15px 15px 42px ; color : #4D4D4D ; font-size : 14px ; font-weight : 700 ; border-bottom : 1px solid #CCC ; position : relative ; -webkit- transition : all 0.4 s ease; -o- transition : all 0.4 s ease; transition : all 0.4 s ease; } .accordion li:last-child .link { border-bottom : 0 ; } .accordion li i { position : absolute ; top : 16px ; left : 12px ; font-size : 18px ; color : #595959 ; -webkit- transition : all 0.4 s ease; -o- transition : all 0.4 s ease; transition : all 0.4 s ease; } .accordion li i.fa-chevron-down { right : 12px ; left : auto ; font-size : 16px ; } .accordion li.open .link { color : #b63b4d ; } .accordion li.open i { color : #b63b4d ; } .accordion li.open i.fa-chevron-down { -webkit- transform : rotate ( 180 deg); -ms- transform : rotate ( 180 deg); -o- transform : rotate ( 180 deg); transform : rotate ( 180 deg); } |
下面是子選單的CSS樣式:
/** * Submenu -----------------------------*/ .submenu { display : none ; background : #444359 ; font-size : 14px ; } .submenu li { border-bottom : 1px solid #4b4a5e ; } .submenu a { display : block ; text-decoration : none ; color : #d9d9d9 ; padding : 12px ; padding-left : 42px ; -webkit- transition : all 0.25 s ease; -o- transition : all 0.25 s ease; transition : all 0.25 s ease; } .submenu a:hover { background : #b63b4d ; color : #FFF ; } |
JAVASCRIPT
首先定義Accordion物件:
var Accordion = function (el, multiple) { this .el = el || {}; this .multiple = multiple || false ; // Variables privadas var links = this .el.find( '.link' ); // Evento links.on( 'click' , {el: this .el, multiple: this .multiple}, this .dropdown) } |
為手風琴Accordion新增下拉選單事件:
Accordion.prototype.dropdown = function (e) { var $el = e.data.el; $ this = $( this ), $next = $ this .next(); $next.slideToggle(); $ this .parent().toggleClass( 'open' ); if (!e.data.multiple) { $el.find( '.submenu' ).not($next).slideUp().parent().removeClass( 'open' ); }; } |
然後可以透過下面語句呼叫手風琴下拉選單:
var accordion = new Accordion($( '#accordion' ), false ); |