Lleva las listas HTML al siguiente nivel con CSS
Las listas HTML son un recurso muy utilizado tanto por diseñadores y desarrolladores web como por blogueros, pero la verdad es que por defecto suelen estar bastante desnutridas en cuando a diseño. En este post vamos a enseñarte a maquetar listados con CSS dándoles un aspecto mucho más moderno.
Hay muchísimas maneras de maquetar listas, nosotros vamos a poner 5 ejemplos diferentes. La ventaja de todo esto, es que puedes personalizar estos estilos y crear tus propias listas con los efectos que se te ocurran.
Lista #1
Vamos a crear un efecto de rotado y sombreado en el elemento activo. Con esto se consigue resaltar de una manera llamativa el elemento donde está el puntero del ratón, ideal para crear menús.
El HTML:
<div id="lista1"> <ul> <li><a href="#">Menu 1</a></li> <li><a href="#">Menu 2</a></li> <li><a href="#">Menu 3</a></li> <li><a href="#">Menu 4</a></li> </ul> </div>
El CSS:
#lista1 ul { list-style:none; } #lista1 ul li { font-family:Georgia,serif,Times; font-size:18px; } #lista1 ul li a { display:block; width:300px; height:28px; background-color:#333; border-left:5px solid #222; border-right:5px solid #222; padding-left:10px; text-decoration:none; color:#bfe1f1; } #lista1 ul li a:hover { -moz-transform:rotate(-5deg); -moz-box-shadow:10px 10px 20px #000000; -webkit-transform:rotate(-5deg); -webkit-box-shadow:10px 10px 20px #000000; transform:rotate(4deg); box-shadow:10px 10px 20px #000000; margin-left: 10px; }
Resultado:
Lista #2
Ahora, vamos a crear una lista ordenada resaltando el elemento activo y maquetando la numeración dentro de círculos.
El HTML:
<ol id="lista2"> <li>List item</li> <li>List item</li> <li>List item <ol> <li>List sub item</li> <li>List sub item</li> <li>List sub item</li> </ol> </li> <li>List item</li> <li>List item</li> </ol>
El CSS:
#lista2 { counter-reset: li; list-style: none; *list-style: decimal; font: 15px 'trebuchet MS', 'lucida sans'; padding: 0; margin-bottom: 4em; text-shadow: 0 1px 0 rgba(255,255,255,.5); } #lista2 ol { margin: 0 0 0 2em; } #lista2 li{ position: relative; display: block; padding: .4em .4em .4em 2em; *padding: .4em; margin: .5em 0; background: #ddd; color: #444; text-decoration: none; border-radius: .3em; transition: all .3s ease-out; } #lista2 li:hover{ background: #eee; } #lista2 li:hover:before{ transform: rotate(360deg); } #lista2 li:before{ content: counter(li); counter-increment: li; position: absolute; left: -1.3em; top: 50%; margin-top: -1.3em; background: #87ceeb; height: 2em; width: 2em; line-height: 2em; border: .3em solid #fff; text-align: center; font-weight: bold; border-radius: 2em; transition: all .3s ease-out; }
Resultado:
- List item
- List item
- List item
- List sub item
- List sub item
- List sub item
- List item
- List item
Lista #3
Parecida a la anterior, en esta ocasión para los que prefieren un cuadrado en vez de círculos.
El HTML:
<ol id="lista3"> <li>List item</li> <li>List item</li> <li>List item <ol> <li>List sub item</li> <li>List sub item</li> <li>List sub item</li> </ol> </li> <li>List item</li> <li>List item</li> </ol>
El CSS:
#lista3 { counter-reset: li; list-style: none; *list-style: decimal; font: 15px 'trebuchet MS', 'lucida sans'; padding: 0; margin-bottom: 4em; text-shadow: 0 1px 0 rgba(255,255,255,.5); } #lista3 ol { margin: 0 0 0 2em; } #lista3 li{ position: relative; display: block; padding: .4em .4em .4em .8em; *padding: .4em; margin: .5em 0 .5em 2.5em; background: #ddd; color: #444; text-decoration: none; transition: all .3s ease-out; } #lista3 li:hover{ background: #eee; } #lista3 li:before{ content: counter(li); counter-increment: li; position: absolute; left: -2.5em; top: 50%; margin-top: -1em; background: #fa8072; height: 2em; width: 2em; line-height: 2em; text-align: center; font-weight: bold; } #lista3 li:after{ position: absolute; content: ''; border: .5em solid transparent; left: -1em; top: 50%; margin-top: -.5em; transition: all .3s ease-out; } #lista3 li:hover:after{ left: -.5em; border-left-color: #fa8072; }
Resultado:
- List item
- List item
- List item
- List sub item
- List sub item
- List sub item
- List item
- List item
Lista #4
Probemos algo diferente. Ahora vamos a poner números grandes y parcialmente escondidos en el <li>
El HTML:
<ol id="lista4"> <li>List item</li> <li>List item</li> <li>List item</li> <li>List item</li> </ol>
El CSS:
#lista4 ol { counter-reset: li; list-style: none; *list-style: decimal; font: 15px 'trebuchet MS', 'lucida sans'; padding: 0; margin-bottom: 4em; text-shadow: 0 1px 0 rgba(255,255,255,.5); } #lista4 ol { margin: 0 0 0 2em; } #lista4 { list-style-type: none; list-style-type: decimal !ie; /*IE 7- hack*/ margin: 0; margin-left: 3em; padding: 0; counter-reset: li-counter; } #lista4 > li{ position: relative; margin-bottom: 20px; padding: 1em; border-left: 2px solid #CCCCCC; background-color: #f5f5f5; } #lista4 > li:before { position: absolute; top: 0; left: -0.95em; width: 1em; font-size: 4em; line-height: 1; font-weight: bold; text-align: right; color: #464646; transform: rotate(-25deg); -ms-transform: rotate(-25deg); -webkit-transform: rotate(-25deg); z-index: -99; overflow: hidden; content: counter(li-counter); counter-increment: li-counter; }
Resultado:
- List item
- List item
- List item
- List item
Lista #5
Parecido al anterior ejemplo, superponiendo ahora el índice por encima del <li>.
El HTML:
<ol id="lista5"> <li>List item</li> <li>List item</li> <li>List item</li> <li>List item</li> </ol>
El CSS:
#lista5 { counter-reset: li; list-style: none; *list-style: decimal; font: 15px 'trebuchet MS', 'lucida sans'; padding: 0; margin-bottom: 4em; text-shadow: 0 1px 0 rgba(255,255,255,.5); } #lista5 ol { margin: 0 0 0 2em; } #lista5 { list-style-type: none; list-style-type: decimal !ie; /*IE 7- hack*/ margin: 0; margin-left: 1em; padding: 0; counter-reset: li-counter; } #lista5 > li{ position: relative; margin-bottom: 1.5em; padding: 1.5em; background-color: #eaeaea; } #lista5 > li:before { position: absolute; top: -0.3em; left: -0.5em; width: 1.8em; height: 1.2em; font-size: 2em; line-height: 1.2; font-weight: bold; text-align: center; color: #464646; background-color: #d0d0d0; transform: rotate(-20deg); -ms-transform: rotate(-20deg); -webkit-transform: rotate(-20deg); z-index: 99; overflow: hidden; content: counter(li-counter); counter-increment: li-counter; }
Resultado:
- List item
- List item
- List item
- List item
¿Interesante verdad? En Endeos hemos utilizado un listado similar a la Lista #3 en nuestro minisite de Web y Marketing Online. En caso de que tú también hayas usado alguna vez estilos CSS para maquetar listas, puedes dejarnos un comentario explicándonos cómo lo has hecho.