CSSLab » listas http://www.csslab.cl Un laboratorio de ideas para la web en español Thu, 12 Jan 2012 02:32:35 +0000 en hourly 1 http://wordpress.org/?v= Videocast 2: menú con listas http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/ http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/#comments Fri, 28 Dec 2007 18:26:12 +0000 Jorge Epuñan http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/ Fijándome en las estadísticas de CSSLab, me dí cuenta de que un gran número de visitas a este sitio desde buscadores viene desde la consulta css menú horizontal. Este tema es algo que se ha tocado hace bastante tiempo. Pero nunca está de mas reforzarlo, y ofrecer mejor material a quienes necesitan de este recurso. Además es bueno de que los usuarios hagan esta búsqueda, hace pensar de que tienen interés de aprender la manera correcta de crear menúes. Bueno, estoy para ayudar, así que hice un videocast bastante básico y rápido de cómo lograr menúes con listas, verticales u horizontales. Como he aprendido del videocast anterior, esta vez subí 3 versiones para deleite del consumidor. Espero sea de bastante ayuda a quienes necesitan de este método.

Videocast 2 versión stream
Videocast 2 versión completa
Videocast 2 versión iPod

Como siempre, el material con el que hice el ejemplo está disponible.

]]>
http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/feed/ 9
Convirtiendo Listas en Árboles http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/ http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/#comments Tue, 25 Sep 2007 21:20:04 +0000 Jorge Epuñan http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/

Recontra conocidas ya son los menúes construídos con listas de ítems. Los hay verticales, y muy fácil es transformarlas a horizontales. Gráficamente, existen necesidades que a través de la habilidad del diseñador/desarrollador se pueden solucionar elegantemente con unos trucos de CSS. En este caso, mostraré una manera de crear menúes tipo árboles, utilizando algunos GIF para lograr esos enlaces y nodos.

Bueno, lo primero es el código HTML. Básicamente se compone de una lista con <ul> y algunos <li> tienen sublistas, como verán en el ejemplo a continuación:

<ul id="menu_arbol">
     <li><a href="#" title="Ver las Cervezas">Cervezas</a>
          <ul>
               <li><a href="#" title="Enlace a cerveza Pilsen">Pilsen</a></li>
               <li><a href="#" title="Enlace a cerveza Bock">Bock</a></li>
               <li><a href="#" title="Enlace a cerveza Lager">Lager</a></li>
               <li><a href="#" title="Enlace a cerveza Ale">Ale</a></li>
          </ul>
     </li>
     <li><a href="#" title="Ver los Vinos">Vinos</a>
          <ul>
               <li><a href="#" title="Enlace a Vino Merlot">Merlot</a></li>
               <li><a href="#" title="Enlace a Vino Sirah">Sirah</a></li>
          </ul>
     </li>
     <li><a href="#" title="Ver los Licores">Licores</a>
          <ul>
               <li><a href="#" title="Enlace Licor Ron">Ron</a></li>
               <li><a href="#" title="Enlace a Licor Vodka">Vodka</a></li>
          </ul>
     </li>
</ul>

Ver hasta aquí (1)

Una simple lista de 3 items donde 2 de ellos tienen subitems. En esta caso será un menú, pero puede ser también sólo una lista de elementos (ordenados <ol> o desordenados <ul>) sin enlaces. Bueno, a lo nuestro.

Primero que todo, a través del CSS esconderemos los bullets, ya que los reemplazaremos por una imagen de una línea vertical.

ul#menu_arbol, ul#menu_arbol ul {
     list-style-type: none;
     background: url(imagenes/linea_vertical.gif) repeat-y;
}
ul#menu_arbol li {
     padding: 0 10px;
}
ul#menu_arbol ul {
     margin-left: 5px;
}

Ver hasta aquí (2)

Ahora, conectamos los nodos:

ul#menu_arbol li {
     padding: 0 10px;
     background: url(imagenes/nodo.gif) no-repeat;
}

Ver hasta aquí (3)

Finalmente, nos queda poner otra imagen donde las listas se cierren. Esto lo tendremos que hacer agregando una class manualmente a los últimos ítems de cada lista:

ul#menu_arbol li.cierre {
     background: #FFF url(imagenes/cierre.gif) left top no-repeat;
}

Importante fijarse que en este punto se agregó un color de background (blanco) lo que se hizo necesario para tapar la línea vertical que pasa por debajo (dado que esta imagen es un GIF transparente).

Ver hasta aquí (4)

Con eso estaríamos, pero hagamos esto bien de una. Podemos automatizar tarea de agregar las class, a través de Javascript:

window.onload = function () {
     var tree = document.getElementById("menu_arbol");
     var lists = [ menu_arbol ];
     for (var i = 0; i < tree.getElementsByTagName("ul").length; i++)
          lists[lists.length] = tree.getElementsByTagName("ul")[i];
     for (var i = 0; i < lists.length; i++) {
          var item = lists[i].lastChild;
          while (!item.tagName || item.tagName.toLowerCase() != "li")
          item = item.previousSibling;
          item.className += " cierre";
     }
};

Esto lo que hará será primero buscar en todos los <ul> (getElementsByTagName) su último nodo (lastChild) y le agregará la class="cierre" que creamos (className +).

Ver hasta aquí (5)

Podemos también agregarle movimiento, un toggle() por ejemplo. Utilicen el framework que más les acomode, en este caso aprovecharé lo liviano de Mootools:

window.addEvent(’domready’, function(){
     var mySlide = new Fx.Slide(’cervezas’);
     mySlide.hide()
     $(’toggle_c’).addEvent(’click’, function(e){
          e = new Event(e);
          mySlide.toggle();
          e.stop();
     });
});

Primero, tomamos el #cervezas y lo escondemos (mySlide.hide()); luego, tomamos el #toggle_c (que se lo dí al <ul> del subítem) y le damos la instrucción de mostrarlo o esconderlo cuando le haga un click ($(’toggle_c’).addEvent(’click’) y mySlide.toggle();). Luego, se repite con los otros elementos de la lista.

Ver ejemplo final

Por supuesto, todo el código a través de un view source de los ejemplos.

]]>
http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/feed/ 23
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221| viagrea onling viagra tablets name and cost levitra and dapoxetine youtube/viagra cialis extra generic viagra accepting american express buy generic viagra online with no prescription with mastercard generic levitra 20 mg levitra pro buy viagra online in ireland is it illegal to order viagra from outside the united states cheapest generic cialis buy cheap levitra overnight delivery cialis wears off airport security generic viagra generic finasteride viagra for sale using paypal ukAccutane Online Doxycycline online Buy Cheap Lexapro Online No Prescription Prednisone Online Buy Accutane No Prescription