79819213

Date: 2025-11-13 17:18:12
Score: 5
Natty:
Report link

En react los componentes select y option son nativos, no se les puede dar la personalización que se le quisiera dar, pero es posible atreves de muchas alternativas, por ejemplo a mi se me ocurrió: switch case para manejar el estado isClose, setIsClose, así seteamos los datos y hacemos que aparzma nuestro menu cuando queramos

aqui es en html pero seria algo similar, lo e sacado de un proyecto de mi escuela, espero te sirva

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Menú JS Puro</title>
</head>
<body>
    <div id="root"></div>

    <script>
    document.addEventListener('DOMContentLoaded', function() {
    
    function crearMenuConJavaScriptPuro() {
        let seccionActiva = 'inicio';
        let isClose = true;

        const actualizarContenido = (contenidoElemento, botones) => {
            
            switch (seccionActiva) {
                case 'inicio':
                    contenidoElemento.innerHTML = '<h3>Página Principal</h3><p>Haz clic en el botón para desplegar las opciones.</p>';
                    break;
                case 'productos':
                    contenidoElemento.innerHTML = '<h3>Nuestros Productos</h3><ul><li>Laptop Pro - $1200</li><li>Monitor Ultra HD - $350</li></ul>';
                    break;
                case 'contacto':
                    contenidoElemento.innerHTML = '<h3>Contáctanos</h3><p>[email protected]</p>';
                    break;
            }

            botones.forEach(btn => {
                btn.style.backgroundColor = 'white';
                btn.style.color = '#007bff';
                btn.style.fontWeight = 'normal';

                if (btn.dataset.seccion === seccionActiva) {
                    btn.style.backgroundColor = '#007bff';
                    btn.style.color = 'white';
                    btn.style.fontWeight = 'bold';
                }
            });
        };

        const toggleMenu = (navLinksElemento, toggleBtnElemento) => {
            isClose = !isClose;

            navLinksElemento.style.display = isClose ? 'none' : 'flex';
            toggleBtnElemento.textContent = isClose ? 'Abrir' : 'Cerrar';
        };

        const estilos = {
            contenedor: {
                fontFamily: 'Arial, sans-serif',
                maxWidth: '600px',
                margin: '20px auto',
                border: '1px solid #ccc',
                padding: '15px',
                borderRadius: '8px',
            },
            navBar: {
                display: 'flex',
                alignItems: 'center',
                justifyContent: 'space-between',
                paddingBottom: '10px',
            },
            navLinks: {
                display: 'none',
                flexDirection: 'column',
                gap: '5px',
                marginTop: '10px',
                paddingTop: '10px',
                borderTop: '1px solid #eee',
            },
            toggleButton: {
                padding: '10px 15px',
                border: '1px solid #333',
                backgroundColor: '#f0f0f0',
                cursor: 'pointer',
                borderRadius: '4px',
                fontWeight: 'bold',
            },
            botonBase: {
                padding: '10px 15px',
                border: '1px solid #007bff',
                backgroundColor: '#fff',
                color: '#007bff',
                cursor: 'pointer',
                borderRadius: '4px',
                transition: 'background-color 0.3s, color 0.3s',
                textAlign: 'left',
            },
            botonActivo: {
                backgroundColor: '#007bff',
                color: 'white',
                fontWeight: 'bold',
            },
            contenido: {
                marginTop: '15px',
                padding: '10px',
                border: '1px solid #eee',
                borderRadius: '4px',
            },
        };

        const menuContainer = document.createElement('div');
        Object.assign(menuContainer.style, estilos.contenedor);

        const navBar = document.createElement('div');
        Object.assign(navBar.style, estilos.navBar);
        
        const title = document.createElement('span');
        title.textContent = 'Menú Principal';
        Object.assign(title.style, {fontWeight: 'bold', fontSize: '1.2em'});

        const toggleBtn = document.createElement('button');
        toggleBtn.id = 'toggleButton';
        toggleBtn.textContent = 'Abrir';
        Object.assign(toggleBtn.style, estilos.toggleButton);

        const navLinks = document.createElement('nav');
        navLinks.id = 'navLinks';
        Object.assign(navLinks.style, estilos.navLinks);
        
        const mainContent = document.createElement('main');
        mainContent.id = 'menuContenido';
        Object.assign(mainContent.style, estilos.contenido);
        
        navBar.appendChild(title);
        navBar.appendChild(toggleBtn);
        menuContainer.appendChild(navBar);

        const botonesSeccion = [];
        const secciones = ['inicio', 'productos', 'contacto'];
        secciones.forEach(seccion => {
            const btn = document.createElement('button');
            btn.textContent = seccion.charAt(0).toUpperCase() + seccion.slice(1);
            btn.className = 'menu-button';
            btn.dataset.seccion = seccion;
            Object.assign(btn.style, estilos.botonBase);
            
            btn.addEventListener('click', () => {
                seccionActiva = seccion;
                actualizarContenido(mainContent, botonesSeccion); 
            });
            navLinks.appendChild(btn);
            botonesSeccion.push(btn);
        });

        menuContainer.appendChild(navLinks);
        
        const hr = document.createElement('hr');
        Object.assign(hr.style, { border: 'none', height: '1px', backgroundColor: '#ccc', margin: '15px 0' });
        menuContainer.appendChild(hr);

        menuContainer.appendChild(mainContent);

        toggleBtn.addEventListener('click', () => toggleMenu(navLinks, toggleBtn));
        
        actualizarContenido(mainContent, botonesSeccion); 
        
        return menuContainer;
    }

    const rootElement = document.getElementById('root');
    if (rootElement) {
        rootElement.appendChild(crearMenuConJavaScriptPuro());
    }
    });
    </script>
</body>
</html>

Reasons:
  • Blacklisted phrase (2): espero
  • Blacklisted phrase (1.5): sirva
  • Blacklisted phrase (2): crear
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (1):
Posted by: Luis David Diaz Hoil