Menú animado con transiciones de css

Contenidos

Este va a ser un rápido ejemplo de cómo hacer un menú animado con transiciones de css, que tiene muchas posibilidades de crecimineto, y para eso usarémos las selecciones de :before y :after para no tener que rehacer un menú ya terminado y poder darle una rediseñada sin cambiar nada más que los estilos.

Primero necesitamos tener un menú hecho en html:

<ul class="menuSup">
	<li><a href="#servicios">Servicios</a></li>
	<li><a href="#clientes">Clientes</a></li>
	<li><a href="#contacto">Presupuestos</a></li>
</ul>

En segundo lugar tenemos nuestro css, donde damos el estilo básico a todo el menú voy a dejar los archivos fuente para que puedan descargarlos.

.menuSup {
	text-align: center;
	margin: 5px auto;
}

.menuSup li {
	display: inline-block;
	margin: 0;
}

.menuSup li a {
	display: inline-block;
	text-decoration: none;
	color: #ffffff;
	transition: all .7s;
	padding:1em 2em;
	background: #333;
	position: relative;
}

Ahora vamos a utilizar los :before y :after que son con lo que vamos a hacer la animación, hay que tener en cuenta que los dos son hijos de la etiqueta a la que pertenecen, en este caso el ancla, en el renglón 18 de la ventanita anterior usé una posición relativa para que los objetos que vamos a crear dentro del ancla puedan ser posicionados a su vez dentro de la misma.

En la siguiente ventana vamos a poner las propiedades generales del :before y el :after, primero para poder manipularlos vamos a poner content:"";. le damos un top y un left para ponerlos dos elementos arriba y al centro, el height va a poner un tamaño de alto y finalmente un ancho de 0 para que no se vean hasta que le demos un hover.

.menuSup li a:before, .menuSup li a:after {
	content: "";
	position: absolute;
	top:0;
	left: calc(50% - 0%);
	height: 6px;
	width: 0%;
}

Ahora vamos a dar las características específicas de cada uno de ellos, color de fondo y también la transición, que la pusimos específicamente en cada una porque tienen diferentes delays.

.menuSup li a:before {
	background: #fff;
	transition: all .7s .4s;
}
.menuSup li a:after {
	background: #00aeef;
	transition: all .7s .2s;
}

Finalmente vamos a agregar el ancho al que queremos que crescan los dos objetos y el left para que se mantenga en el centro de la caja…

.menuSup li a:hover:before, .menuSup li a:hover:after {
	width: 100%;
	left: calc(50% - 50%);
}

Este sería el ejemplo funcional del menú:

Estos son los archivos fuente: html y css

Espero les guste…

Referencias

https://www.w3schools.com/cssref/css_selectors.php

https://www.w3schools.com/cssref/css3_pr_transition.php

otros artículos
¿Estás listo para asesorarte sobre tus necesidades web?
Ponte en contacto hoy y recibe una consulta gratuita.

¿Estás listo para asesorarte sobre tus necesidades web?

Ponte en contacto hoy y recibe una consulta gratuita.

Solicite consulta o cotización

Request a consultation or quote