Mastercafe S.L.
Dirección:
Pl. Puerta de Europa 2 - 1D
Oviedo Asturias
33011
Telefonos de contacto:
Oficina: +34 627 531 764
Tel: 985 11 3939
Fax: 985 11 5780
Correo electronico:
info@mastercafe.com
admin@mastercafe.com
En muchas ocasiones necesitamos crear menús que disponen de una gran cantidad de subelementos y esto hace realmente dificil asignarlos en una sola columna. La solución es agruparlos en varias columnas que a su vez sean simples listas incluidas en una sección que visualizamos.
En el ejemplo funcional superior demostramos como cada uno de los elementos se va a mostrar expandiendo la sección en curso y desplazando hacia abajo el contenido del submenú.
El código necesario es bastante simple, creamos una lista desordenada y dentro de cada uno de los elementos vamos a incluir una sección div que a su vez va a contener las distintas listas desordenadas de links
<div class="content">
<h1>UI Elements</h1>
<div class="box">
<h2>Search Box con Demo Filtro</h2>
<form id="ui_element" class="sb_wrapper">
<p>
<span class="sb_down"></span>
<input class="sb_input" type="text"/>
<input class="sb_search" type="submit" value=""/>
</p>
<ul class="sb_dropdown" style="display:none;">
<li class="sb_filter">Filtra la busqueda</li>
<li><input type="checkbox"/><label for="all"><strong>Todas las categorias</strong></label></li>
<li><input type="checkbox"/><label for="Automotive">Vehiculos</label></li>
<li><input type="checkbox"/><label for="Baby">Infantil</label></li>
<li><input type="checkbox"/><label for="Beauty">Belleza</label></li>
<li><input type="checkbox"/><label for="Books">Libros</label></li>
<li><input type="checkbox"/><label for="Cell">Servicios moviles</label></li>
<li><input type="checkbox"/><label for="Cloth">Accesorios</label></li>
<li><input type="checkbox"/><label for="Electronics">Electronica</label></li>
<li><input type="checkbox"/><label for="Gourmet">Comida</label></li>
<li><input type="checkbox"/><label for="Health">Cuidado personal</label></li>
<li><input type="checkbox"/><label for="Home">Jardineria</label></li>
<li><input type="checkbox"/><label for="Industrial">Industria</label></li>
<li><input type="checkbox"/><label for="Jewelry">Joyas</label></li>
<li><input type="checkbox"/><label for="Magazines">Revistas</label></li>
</ul>
</form>
</div>
</div>
Pocas explicaciones necesitamos sobre este modelo de menú, vamos con la parte que realmente nos ayuda a generar este menú visualmente
La hoja de estilos podremos personalizarla a nuestro gusto o al aspecto y norma gráfica de nuestra web, pocos elementos son significativos. Destacar la posición absoluta de la caja principal y la caja dependiente del input de entrada. El resto será decoración de este mismo.
.sb_wrapper{
margin:0;
padding:0;
position: absolute;
top:80px;
left:40px;
width:372px;
}
.sb_wrapper input[type="text"],
ul.sb_dropdown{
border:1px solid #fff;
background: #fafafa;
background: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#fafafa));
background: -moz-linear-gradient(top, #f2f2f2, #fafafa);
font-size:24px;
font-family:"Myriad Pro", "Trebuchet MS", sans-serif;
-moz-box-shadow:1px 1px 3px #555;
-webkit-box-shadow:1px 1px 3px #555;
-box-shadow:1px 1px 3px #555;
outline:none;
padding:6px 5px 6px 20px;
text-shadow:1px 1px 1px #fff;
width:295px;
float:left;
margin:3px 0px;
}
ul.sb_dropdown{
float:left;
list-style:none;
width:360px;
padding:6px 5px;
-moz-border-radius:0px 0px 10px 10px;
-webkit-border-bottom-right-radius:10px;
-webkit-border-bottom-left-radius:10px;
border-bottom-right-radius:10px;
border-bottom-left-radius:10px;
}
ul.sb_dropdown li{
font-size:16px;
line-height:32px;
height:32px;
float:left;
width:50%;
}
ul.sb_dropdown li input[type="checkbox"]{
float:left;
margin:10px 4px 0 5px;
}
ul.sb_dropdown li.sb_filter{
width:348px;
border:1px solid #f9f9f9;
clear:both;
background: #ddd;
font-size:12px;
text-transform:uppercase;
letter-spacing:1px;
color:#444;
height:16px;
line-height:16px;
padding:5px;
-moz-box-shadow:0px 0px 2px #777;
-webkit-box-shadow:0px 0px 3px #555 inset;
-box-shadow:0px 0px 3px #555 inset;
}
span.sb_up,
span.sb_down{
position:absolute;
top:3px;
left:0px;
width:14px;
height:41px;
background-color:#f2f2f2;
background-position:center center;
background-repeat: no-repeat;
z-index:10;
border:1px solid #fff;
-moz-box-shadow:1px 0px 1px #ddd;
-webkit-box-shadow:1px 0px 1px #ddd;
-box-shadow:1px 0px 1px #ddd;
}
span.sb_up{
background-image:url(../icons/up.png);
}
span.sb_down{
background-image:url(../icons/down.png);
}
input.sb_search{
background:#f2f2f2 url(../icons/search.png) no-repeat center center;
height:43px;
width:50px;
float:left;
border:none;
margin:3px 0px;
border:1px solid #fff;
-moz-box-shadow:1px 1px 3px #555;
-webkit-box-shadow:1px 1px 3px #555;
-box-shadow:1px 1px 3px #555;
outline:none;
cursor:pointer;
}
input.sb_search:hover{
background-color:#fff;
}
Vamos con lo importante, que aparezca nuestro filtro asistido.
En este ejemplo el script necesario es simple, pero no por ello menos funcional
$(function() {
/**
* el elemento
*/
var $ui = $('#ui_element');
/**
* Al foco y en click mostrar el dropdown,
* y cambiar la imagen flecha
*/
$ui.find('.sb_input').bind('focus click',function(){
$ui.find('.sb_down')
.addClass('sb_up')
.removeClass('sb_down')
.andSelf()
.find('.sb_dropdown')
.show();
});
/**
* Sobre raton saliendo oculto el dropdown,
* y cambia la imagen de indicador
*/
$ui.bind('mouseleave',function(){
$ui.find('.sb_up')
.addClass('sb_down')
.removeClass('sb_up')
.andSelf()
.find('.sb_dropdown')
.hide();
});
/**
* seleccionando todos checkboxes
*/
$ui.find('.sb_dropdown').find('label[for="all"]').prev().bind('click',function(){
$(this).parent().siblings().find(':checkbox').attr('checked',this.checked).attr('disabled',this.checked);
});
});
En este caso el script realmente realiza tres trabajos, mostrar el filtro, ocultarlo y ayudarnos a desmarcar/marcar todos los elementos del filtro con un simple selector.
Este ejemplo fue extraido de CoDrops y creado por Mary Lou, el ejemplo completo del menú funcionando: DEMO STAND ALONE
Web creada con MBC Diseño y desarrollo web © Mastercafe SL - Alojamiento web trafico ilimitado hosting ISPActivo | Nota legal | Nota técnica