KeyPro | Desarrollo web

Menú circular

Simple menú circular HTML CSS y JQuery

17 octubre, 2019 en

¿Te gustaría implementar un Menú circular HTML y CSS en tus diseños pero las ideas que encuentras son bastante complejas?, Entonces este menú es para ti. En este artículo te enseño a crearlo desde cero, únicamente con conocimientos básicos en HTML, CSS y la librería JQuery de Java Script.

Comencemos con la explicación y el desarrollo de este Menú circular HTML y CSS como un mini pen…

La estructura

Primero crearemos una carpeta llamada “mi_menu_circular” o algo por el estilo, (esto lo defines tú) la cual será nuestra carpeta raíz.

Dentro de ella haremos tres archivos, el primero llamado “index.html”, el segundo styles.css” y el tercero llamado “menu.js”, te debería quedar algo así:

Estructura menu circular

El cuerpo HTML

Procedemos a crear la estructura en HTML que se encargará de darle el cuerpo a nuestro menú.

Utilizaremos una etiqueta nav con el ID menú, dentro de ella un elemento a con el ID btnMenu y ocho elementos a con las clases item y none.

Además el ID item$, en donde $ = número de ítem.

<div class="menu">
	<a href="#" id="btnMenu">Menú</a>
  	<a href="#" id="item1" class="item none">Item 1</a>
  	<a href="#" id="item2" class="item none">Item 2</a>
  	<a href="#" id="item3" class="item none">Item 3</a>
  	<a href="#" id="item4" class="item none">Item 4</a>
  	<a href="#" id="item5" class="item none">Item 5</a>
  	<a href="#" id="item6" class="item none">Item 6</a>
  	<a href="#" id="item7" class="item none">Item 7</a>
  	<a href="#" id="item8" class="item none">Item 8</a>
</div>

Cada elemento en una interfaz gráfica que diga estar diseñado debe tener colores y animaciones debido a que permiten al usuario navegar entendiendo el flujo de lectura.

Para esto procederemos a darles colores a nuestro menú de manera similar a crear una página web.

Los estilos CSS

Estos estilos dan como resultado un aspecto idéntico al menú mostrado al principio del artículo.

Sin embargo, puedes modificar los colores y tamaños de cada parte para lograr algún otro efecto y desarrollar el menú acorde a tus necesidades.

Recuerda que sin duda el límite lo pone tu imaginación.

* {
	margin: 0;
	padding: 0;
}

body {
	background-image: url("https://cdn.pixabay.com/photo/2016/10/22/01/54/wood-1759566_960_720.jpg");
	background-size: cover;
	background-attachment: fixed;
	background-repeat: no-repeat;
}

.menu {
	width: 100%;
	height: 100%;
	position: absolute;
}

.menu a {
	left: 50%;
	top: 50%;
	color: #fff;
	padding: 10px;
	text-decoration: none;
	position: absolute;
	transform: translate(-50%, -50%);
	border-radius: 10px 0 10px 0;
	border: 1px solid rgba(0,146,255,1);
	transition: ease background 0.25s;
}

#btnMenu {
	color: #fff;
	border-radius: 5px;
	background: rgba(0,146,255,0.5);
}

#btnMenu:hover {background: transparent;}

.item:hover {
	border-radius: 0 10px 0 10px;
	background: rgba(0,146,255,0.5);
}

.item.none {display: none;}

/* Estas medidas indican las posiciones de cada item en el plano */
#item2, #item4 {left: 70%;}
#item6, #item8 {left: 28%;}
#item4, #item6 {top: 68%;}
#item2, #item8 {top: 33%;}
#item1 {top: 20%;}
#item3 {left: 80%;}
#item5 {top: 80%;}
#item7 {left: 20%}

Ahora pasemos a la magia, y es que claro que podemos hacer un menú interactivo sin necesidad de utilizar Java Script.

En en la actualidad CSS3 nos permite mucho con cada etiqueta de HTML y sus eventos, pero, esta vez lo haremos con el amigable JQuery.

El dinamismo con JQuery

Deberás incluir la librería JQuery dentro de nuestro proyecto. ¿Cómo hacemos esto?

Tienes que acceder a la siguiente liga:

https://code.jquery.com/jquery-3.4.1.min.js

Una vez dentro verás un montón de código fuente, lo copias y pegas en un archivo llamado “jquery.min.js”, en la carpeta raíz de tu proyecto.

Con el archivo creado, ahora debes enlazarlo a tu página, copia y pega la siguiente línea de código justo antes de la etiqueta </body>.

<script type="text/javascript" src="jquery.min.js"></script>

¡Listo!, ya tienes JQuery en tu proyecto, ahora vamos a programar lo que se necesita para que nuestro menú funcione. ¡Manos a la obra!

var i = 1,
    btnMenu = $("#btnMenu"),
	item1 = $("#item1"),
	item8 = $("#item8");

btnMenu.click(function(){
	if (item1.hasClass("none") && item8.hasClass("none")) {
		var intervalo = setInterval(function(){
			$("#item" + i).slideDown(300).removeClass("none").addClass("visible");
			i++;
			
			if (i > 8) {
				clearInterval(intervalo);
				btnMenu.text("Hide");
				i = 8;
			}
		}, 100);
	} else if (item1.hasClass("visible") && item8.hasClass("visible")) {
		var intervalo = setInterval(function() {
			$("#item" + i).slideUp(300).removeClass("visible").addClass("none");
			i--;
			
			if (i == 0) {
				clearInterval(intervalo);
				btnMenu.text("Menú");
				i = 1;
			}
		}, 100);
	}
});

¡Excelente!, ya hemos finalizado toda la programación de nuestro Menú circular HTML y CSS, demos un vistazo a tu archivo completo index.html.

El menú completo

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Simple Menú Circular</title>
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<link rel="stylesheet" href="styles.css">
</head>
<body>
	<div class="menu">
		<a href="#" id="btnMenu">Menú</a>
		<a href="#" id="item1" class="item none">Item 1</a>
		<a href="#" id="item2" class="item none">Item 2</a>
		<a href="#" id="item3" class="item none">Item 3</a>
		<a href="#" id="item4" class="item none">Item 4</a>
		<a href="#" id="item5" class="item none">Item 5</a>
		<a href="#" id="item6" class="item none">Item 6</a>
		<a href="#" id="item7" class="item none">Item 7</a>
		<a href="#" id="item8" class="item none">Item 8</a>
	</div>
	
	<script src="jquery.min.js"></script>
	<script src="menu.js"></script>
</body>
</html>

 

Recursos y enlaces

• El ejemplo funcional

• Descarga el menú completo

• Un banco de imágenes

KeyPro Web - Enrique Carranza

"The greatest satisfactions are achieved by greater efforts. Work hard and get it all."

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *