Cuando queremos darle a nuestro sitio un diseño minimalista para no saturar con información la vista de los visitantes debemos recurrir a diferentes métodos para mostrar la información. Uno de los más usados es colocar un slider o carrusel con diferentes elementos los cuales se van mostrando uno por uno o en conjunto.
Con CSS3 podemos crear un slider de este tipo y sin ninguna línea de código extra. Empecemos con la estructura básica en html:
<div id="news_ticker"> <span>Últimas noticias</span> <div class="clearfix"></div> <div id="news"> <ul> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 1<br><br>Leer más</span> </a> </li> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 2<br><br>Leer más</span> </a> </li> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 3<br><br>Leer más</span> </a> </li> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 4<br><br>Leer más</span> </a> </li> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 5<br><br>Leer más</span> </a> </li> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 6<br><br>Leer más</span> </a> </li> <li> <a href="#"> <img src="../images/android_cookie.jpg" width="50" height="auto"> <span>Título de noticia 7<br><br>Leer más</span> </a> </li> </ul> </div> </div>
Ahora le damos estilo al contenedor principal y al título:
.clearfix{ clear:both; display:block; height:0; width:0; } #news_ticker{ background:#333; border-radius:10px; box-shadow:3px 3px 5px rgba(0,0,0,.5); color:#eee; height:256px; margin:20px auto; width:200px; } #news_ticker > span{ box-sizing:border-box; float:left; font-size:14px; font-weight:bold; padding:10px; text-align:center; width:100%; }
A continuación aplicamos estilo al contenedor de las noticias, a la lista y a cada noticia:
#news{ height:210px; overflow:hidden; } #news ul{ animation: ticker 20s ease infinite 2s; float:left; list-style:none; margin:0; padding:0; } #news ul li{ float:left; height:50px; padding:10px 20px; } #news ul li a{ color:#eee; text-decoration:none; } #news ul li a img{ float:left; } #news ul li a span{ float:left; margin-left:5px; width:100px; }
Por último definimos la animación que le colocamos a la lista, la cual la desplazará dentro de su contenedor:
@keyframes ticker { 0% {margin-top: 0;} 20% {margin-top: -70px;} 40% {margin-top: -140px;} 60% {margin-top: -210px;} 80% {margin-top: -280px;} 100% {margin-top: 0;} }
Cabe destacar que es necesario colocar los prefijos necesarios para cada navegador o utilizar una solución mucho más sencilla como prefixfree.