Cómo crear menú acordeón con HTML, CSS y JavaScript: Tutorial completo

Go to Homepage

En este tutorial aprenderás a crear un menú acordeón con HTML, CSS y JavaScript

En este tutorial vamos a aprender cómo crear un menú acordeón utilizando HTML, CSS y JavaScript. Si eres un desarrollador web o estás interesado en el diseño frontend, este tutorial es para ti.

El menú acordeón es una estructura de menú desplegable que resulta muy útil para organizar información en sitios web y aplicaciones móviles. Cuando el usuario selecciona un elemento del menú, se despliegan subelementos relacionados con el mismo. Los demás elementos permanecen cerrados y ocupan poco espacio en la pantalla.

El desarrollo de un menú acordeón requiere del uso de tres tecnologías de la web: HTML, CSS y JavaScript. La primera se utiliza para crear la estructura básica del menú, la segunda para aplicar estilos y darle una apariencia atractiva, y la tercera para hacerlo interactivo y funcional.

Empezaremos creando el esqueleto del menú en HTML. Usaremos la etiqueta ul para crear la lista de elementos del menú y las etiquetas li para los elementos individuales. A continuación, cada elemento individual tendrá un anclaje o enlace (<a>) dentro del li que permitirá la reorganización de información.

<ul class="accordion">
    <li>
        <a href="#">Elemento 1</a>
        <ul class="sub-menu">
            <li><a href="#">Subelemento 1</a></li>
            <li><a href="#">Subelemento 2</a></li>
            <li><a href="#">Subelemento 3</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Elemento 2</a>
        <ul class="sub-menu">
            <li><a href="#">Subelemento 1</a></li>
            <li><a href="#">Subelemento 2</a></li>
            <li><a href="#">Subelemento 3</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Elemento 3</a>
        <ul class="sub-menu">
            <li><a href="#">Subelemento 1</a></li>
            <li><a href="#">Subelemento 2</a></li>
            <li><a href="#">Subelemento 3</a></li>
        </ul>
    </li>
</ul>

Ahora, aplicaremos CSS para darle estilo al menú. Usaremos la propiedad display: none para ocultar los subelementos y que solamente se muestre un elemento a la vez. También utilizaremos propiedades de transición para crear una animación al desplegar o cerrar los subelementos.

.accordion ul {
    margin: 0;
    padding: 0;
    list-style-type: none;
}

.accordion li {
    position: relative;
    margin: 0;
    padding: 0;
}

.accordion a {
    display: block;
    background-color: #eee;
    padding: 10px 15px;
    font-size: 16px;
    font-weight: bold;
    text-decoration: none;
    color: #333;
    transition: background-color 0.5s ease;
}

.accordion a:hover {
    background-color: #ccc;
}

.accordion .sub-menu {
    position: relative;
    z-index: 1;
    display: none;
}

.accordion .sub-menu li {
    margin: 0;
    padding: 0;
}

.accordion .sub-menu a {
    background-color: #ddd;
    color: #333;
    font-size: 14px;
    font-weight: normal;
}

.accordion .sub-menu a:hover {
    background-color: #ccc;
}

Finalmente, utilizaremos JavaScript para hacer que el menú sea interactivo y funcional. Agregaremos eventos para que al hacer clic en un elemento, se muestren o cierren los subelementos correspondientes.

var accordion = document.getElementsByClassName("accordion");

for (var i = 0; i < accordion.length; i++) {
    accordion[i].addEventListener("click", function () {
        this.classList.toggle("active");
        var subMenu = this.querySelector(".sub-menu");
        if (subMenu.style.display === "block") {
            subMenu.style.display = "none";
        } else {
            subMenu.style.display = "block";
        }
    });
}

Con todos estos elementos, hemos creado un menú acordeón completamente funcional en HTML, CSS y JavaScript.

El menú acordeón se caracteriza por mostrar y ocultar el contenido del submenú al hacer clic en el botón correspondiente

El menú acordeón es una solución popular en el desarrollo web para presentar submenús de manera eficiente y compacta. Este tipo de menú se caracteriza por mostrar y ocultar el contenido del submenú al hacer clic en el botón correspondiente, lo que lo convierte en una opción ideal para sitios web que tienen muchos submenús o para aquellos que quieren mantener una interfaz de usuario limpia y minimalista.

Crear un menú acordeón es relativamente fácil y se puede hacer utilizando HTML, CSS y JavaScript. En este tutorial completo, guiaremos paso a paso para crear un menú acordeón que se adapte a tus necesidades.

Para empezar, necesitamos un código HTML básico para nuestro menú. La estructura básica se puede seguir mediante una lista no ordenada que contenga elementos de enlace. Cada elemento de enlace debe tener un atributo data-target que apunte a la sección de contenido correspondiente. Aquí hay un ejemplo básico de HTML:

<ul class="menu">
    <li>
        <a href="#" class="menu-btn" data-target="#section1">Sección 1</a>
        <div class="menu-content" id="section1">
            <p>Contenido de la sección 1</p>
        </div>
    </li>
    <li>
        <a href="#" class="menu-btn" data-target="#section2">Sección 2</a>
        <div class="menu-content" id="section2">
            <p>Contenido de la sección 2</p>
        </div>
    </li>
</ul>

Una vez que tenemos nuestra estructura básica, es hora de agregar estilos CSS y scripts de JavaScript. Una buena práctica es crear estilos genéricos para el menú acordeón y luego ajustarlos para que se adapten a nuestras necesidades específicas.

Aquí hay un ejemplo de estilo genérico CSS para el menú acordeón:

.menu {
    list-style: none;
    margin: 0;
    padding: 0;
}

.menu-btn {
    display: block;
    text-decoration: none;
    font-weight: bold;
    padding: 10px;
    margin-bottom: 1px;
    background-color: #eee;
    color: #333;
}

.menu-content {
    display: none;
    padding: 10px;
    border: 1px solid #eee;
}

Este estilo básico es fácil de personalizar y se puede ajustar para que se adapte a cualquier diseño o estilo de marca.

Para que el menú acordeón funcione, necesitamos agregar algunos scripts de JavaScript para manejar los clics y las transiciones de apertura y cierre de la sección de contenido.

Aquí hay un ejemplo de script de JavaScript básico para manejar los clics y las transiciones del menú acordeón:

var btns = document.querySelectorAll(".menu-btn");

btns.forEach(function (btn) {
    btn.addEventListener("click", function () {
        var target = this.getAttribute("data-target");
        var content = document.querySelector(target);

        // toggle class 'active' on the button
        this.classList.toggle("active");

        // toggle class 'show' on the content
        content.classList.toggle("show");
    });
});

Este script es fácil de personalizar y se puede ajustar según las necesidades del proyecto. Con este script, el menú acordeón estará listo para ser utilizado y se puede integrar fácilmente en cualquier proyecto de desarrollo web.

Crear un menú acordeón con HTML, CSS y JavaScript es una tarea fácil que puede mejorar la experiencia del usuario en cualquier sitio web. Con una estructura de HTML básica, estilos CSS y scripts de JavaScript, este tutorial completo le guiará a través de los pasos necesarios para crear un menú acordeón personalizado y fácil de usar en su próximo proyecto de diseño frontend. ¡Que lo disfruten!

Para crear el menú acordeón, necesitaremos un elemento contenedor y una lista desordenada con sus correspondientes elementos de submenú

Para desarrollar una experiencia de usuario interactiva en nuestro sitio web, podemos crear un menú acordeón utilizando HTML, CSS y JavaScript. Este tipo de menú desplegable es muy útil para mostrar información de manera clara y organizada, especialmente en dispositivos móviles.

En primer lugar, es necesario crear un elemento contenedor en nuestro HTML, en el cual incluiremos una lista desordenada con los elementos del menú. Para darle estilo al menú, utilizaremos CSS, por ejemplo, con flexbox para alinear los elementos. Además, le daremos un diseño responsivo para que se ajuste a diferentes resoluciones de pantalla.

Una vez que tengamos el menú en HTML y CSS, procederemos con la funcionalidad de JavaScript. Podemos utilizar EventListeners para detectar cuando el usuario hace click en un elemento del menú. Al hacer click, se despliega el submenú correspondiente. Si se hace click en otro elemento del menú, el submenú previamente desplegado se oculta y se muestra el nuevo.

const menuItems = document.querySelectorAll(".menu-item");

menuItems.forEach((item) => {
    item.addEventListener("click", () => {
        const submenu = item.querySelector(".submenu");
        if (submenu.classList.contains("active")) {
            submenu.classList.remove("active");
        } else {
            closeSubmenus();
            submenu.classList.add("active");
        }
    });
});

function closeSubmenus() {
    const submenus = document.querySelectorAll(".submenu");
    submenus.forEach((submenu) => {
        submenu.classList.remove("active");
    });
}

En este ejemplo, utilizamos una función para cerrar los submenús en caso de que se haga click en otro elemento del menú. También agregamos y eliminamos una clase CSS llamada “active” para mostrar u ocultar los submenús correspondientes.

Para finalizar, podemos personalizar aún más nuestro menú acordeón con efectos de transición, íconos, entre otros detalles de diseño frontend. Es importante asegurarnos de que nuestro menú sea accesible para todos los usuarios, incluyendo aquellos que utilizan lectores de pantalla o tienen alguna discapacidad visual.

Con este tutorial completo, ya tienes las bases para crear un menú acordeón en HTML, CSS y JavaScript. ¡Puedes seguir explorando y mejorando tus habilidades en desarrollo web!

Usaremos CSS para darle estilo a nuestro menú acordeón, especialmente para las transiciones y animaciones

En el desarrollo web, el diseño frontend es una parte fundamental para crear una experiencia de usuario satisfactoria. Un menú acordeón es una excelente opción para mostrar contenido de forma accesible y organizada en una página web. En este tutorial completo aprenderemos a crear un menú acordeón con HTML, CSS y JavaScript.

Ahora, nos centraremos en la parte de estilización usando CSS. Haremos uso de las transiciones y animaciones para crear una mejor experiencia para el usuario.

Primero, necesitamos añadir algunos estilos básicos a nuestro menú acordeón. Podemos usar la propiedad border para crear bordes en nuestro menú y así definir la estructura de nuestro diseño. Podemos elegir el color y el estilo de los bordes en función de nuestras preferencias de diseño, por ejemplo:

.acordeon h2 {
    border: 1px solid #ccc;
    border-radius: 5px;
    padding: 10px;
    margin: 0;
    color: #333;
    cursor: pointer;
}

Con este código estamos añadiendo un borde de color gris claro de 1 píxel, un radio en los bordes de 5 píxeles, un relleno interno de 10 píxeles para nuestros títulos de nuestro menú acordeón y quitando cualquier margen predeterminado.

Ahora, necesitamos hacer que nuestros menús se desplieguen suavemente cuando los usuarios hagan clic en ellos. Para esto, usaremos la propiedad transition, que permite crear efectos de transición suaves en elementos HTML.

.acordeon h2 {
    /* código previo */
    transition: background-color 0.3s ease-in-out;
}

En el ejemplo anterior, estamos diciéndole a CSS que queremos una transición suave en el cambio de color de fondo de nuestros títulos del menú acordeón en un tiempo de 0.3 segundos con el efecto easing ease-in-out.

Además, podemos añadir animaciones usando la propiedad transform. Las animaciones son una forma excelente de agregar un toque de interactividad a nuestro diseño. Por ejemplo:

.acordeon div {
    transform-origin: top;
    transition: transform 0.3s ease-in-out;
}
.acordeon div.cerrado {
    max-height: 0;
    transform: scaleY(0);
}
.acordeon div.abierto {
    max-height: 1000px;
    transform: scaleY(1);
}

Con esto podemos hacer que nuestro menú acordeón se abra y cierre automáticamente y suavemente. Definimos el origen de la transformación en la parte superior del menú y en la clase .cerrado le damos una altura máxima de 0 para que no se muestre contenido. En la clase .abierto, le damos una altura máxima de 1000 píxeles para que muestre todo el contenido disponible.

En la parte de estilización de nuestro menú acordeón, hemos utilizado CSS para crear transiciones y animaciones suaves y así mejorar la experiencia del usuario en nuestra página web. Con estos estilos podemos hacer que nuestro menú acordeón se despliegue y cierre automáticamente de forma suave y se muestre de un modo más atractivo para nuestros usuarios.

JavaScript nos permitirá agregar dinamismo al menú acordeón, como animaciones al abrir y cerrar submenús

En el desarrollo web, crear menús desplegables es común para una mejor organización de la información en una página. Uno de los más populares es el menú acordeón, que muestra solo un elemento a la vez y anima la transición al abrir y cerrar submenús. En este tutorial completo de HTML, CSS y JavaScript, te enseñaremos cómo crear tu propia versión de este tipo de menú.

Para empezar, primero debemos tener la estructura básica del HTML que contendrá el menú acordeón. Utilizaremos una lista desordenada ul que contendrá elementos de lista li como ítems del menú. Cada ítem constará de un encabezado h2 que será el título del grupo y un contenedor div que contendrá las opciones o submenús. Esta estructura básica se verá así:

<ul class="menu-acordeon">
    <li>
        <h2>Título del grupo 1</h2>
        <div>Contenido del submenú</div>
    </li>
    <li>
        <h2>Título del grupo 2</h2>
        <div>Contenido del submenú</div>
    </li>
    ...
</ul>

Luego, para darle estilo a nuestro menú acordeón, utilizaremos CSS. Aquí es donde definiremos los anchos, alturas, colores y transiciones para cada elemento del menú. Para que solo se muestre un elemento a la vez, usaremos la propiedad max-height en el submenú y le daremos un valor de 0, y al momento de hacer clic en el título del grupo, se animará la transición del max-height de 0 a su valor máximo. Para esto, usaremos la propiedad transition y un poco de JavaScript, como se verá a continuación.

.menu-acordeon li {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.2s ease-out;
}

.menu-acordeon li h2 {
    cursor: pointer;
}

.menu-acordeon li.active {
    max-height: 500px;
}

Por último, JavaScript nos permitirá agregar dinamismo al menú acordeón, como animaciones al abrir y cerrar submenús. Primero, debemos seleccionar todos los ítems li y agregar un EventListener a cada uno para detectar el clic. Al hacer clic en el h2, agregaremos una clase active al li que contiene ese h2 y, simultáneamente, eliminaremos la clase active de cualquier otro li que lo tenga, asegurándonos de que solo se muestre un submenú a la vez.

const acordeonItems = document.querySelectorAll(".menu-acordeon li");

acordeonItems.forEach((item) => {
    const titulo = item.querySelector("h2");
    titulo.addEventListener("click", () => {
        item.classList.toggle("active");
        acordeonItems.forEach((otroItem) => {
            if (otroItem !== item) otroItem.classList.remove("active");
        });
    });
});

Con estos sencillos pasos, tendrás un menú acordeón completamente funcional y personalizable en tu sitio web. Recuerda que esta es solo una de muchas formas de crear un menú acordeón, pero esperamos que te haya servido como guía para crear tus propios diseños. ¡Manos a la obra y a seguir aprendiendo sobre desarrollo web y diseño frontend!

Código inline utilizado: transition, querySelectorAll, addEventListener, classList.

Otros Artículos