Un menú desplegable o, lista desplegable, es un elemento de control gráfico que muestra al usuario una variedad de opciones de una categoría que puede elegir para realizar una acción como una compra. Esta tiene dos estados: activa o inactiva. Cuando está inactiva, enseña un solo valor.
A continuación llevaremos a cabo la estructura de lista de opciones que se desplegará del menú de navegación en la versión web de nuestro sitio.
Cómo hacer una lista desplegable en HTML5
Esta sección del menú desktop tiene tres items, que le permitirán al usuario escoger entre: ingresar a su cuenta, ver sus órdenes o salir de la página. Es decir, forman una lista de opciones.
Recuerda que la semántica de HTML5 requiere que los elementos de las listas ( li ) estén dentro de una etiqueta contenedora especial ( ul / ol ).
Esta vista del menú es como una caja que aparecerá cuando el usuario haga clic en su email. Por ahora, solo maquetaremos, puesto que en el curso de React.js le daremos funcionalidad.
Por lo que, debemos darle dimensiones y espaciado al contenedor.
.desktop-menu {width: 100px;height: auto;border: 1px solid var(--very-light-pink); border-radius: 6px;padding: 20px 20px 0 20px;}
Ahora, le quitamos los estilos por defecto a la lista.
.desktop-menu ul { list-style: none;padding:0;margin:0;}
Finalmente, podemos definir la visual como nos especificó diseño.
.desktop-menu ul li { text-align: end;}.desktop-menu ul li:nth-child(1),.desktop-menu ul li:nth-child(2){ font-weight: bold;}.desktop-menu ul li:last-child { padding-top: 20px; border-top: 1px solid var(--very-light-pink);}.desktop-menu ul li:last-child a {color:var(--hospital-green); font-size:var(--sm);}.desktop-menu ul li a {color:var(--back); text-decoration: none; margin-bottom: 20px;display: inline-block;}
Utilizamos display: inline-block para definirle un margin-bottom, puesto que a los elementos inline no es posible aplicarles la propiedad margin.
🙋 ¿Se te ocurre otra forma de llegar al mismo resultado?
Comparte tu código en la seccion de aportes y revisa las ideas de tus compañeros y compañeras.
Contribución creada por Guadalupe Monge Barale con los aportes de Fernando Molano Castrillón
Este archivo lo suelo llamar "basic.css" y lo importo como los import de css así
@import"./basic.css"
Así elimino todos esos estilos que tiene por defecto el navegador, y agrego algunos míos, además de tener mis variables; tal vez le sirva a alguien
Genial amigo, gracias por la maqueta
muy buen aporte!!! Gracias.
No se si alguien se dio cuenta, pero en realidad no llega a usar la variable --black 😅
En Sass

Tuve un error al darle a .desktop-menu un padding de 20px, y me parti la cabeza buscando el problema y al final era:
*{ box-sizing: border-box;}
Ya que siempre suelo utilizarlo al iniciar los estilos 😅
Me sucedió exactamente lo mismo jajajaj
Hola, el detalle de indicarlo como general *, es que tu caja crece y ya no mide 100px, sino 142px, se le esta sumando el padding y el border. Por lo que sería mejor utilizarlo de la siguiente forma:
html { box-sizing: border-box;}*,*::before,*::after { box-sizing: inherit;}
y a tu caja darle un mayor ancho como 150px o 160px, lo que creas más conveniente para que se vea acorde al diseño del ejercicio.
Así todas las imagenes, cajas, etc que trabajes en tu diseño nunca se modificarán sus tamaños por más padding, margin o borde que les apliques, siempre medirán lo que les asignaste.
O en su defecto no usar nada de ese código como en la presente clase, dado que por defecto el modelo de caja que usa el motor de CSS es:
box-sizing: content-box; que no incluyen ni padding, ni margin, ni borde, al calcular su ancho y alto.
Pero regresamos al inicio, tu imagen o caja ya no mediran lo mismo, se les agregará el padding, margin o border.
Esto supongo que se debe explicar con mayor detenimiento en las clases HTML y CSS.
Hola, noto que el menú cuenta con un pqueño sombreado y quise saber como se lograba esto y se logra mediante box-shadow, me parece un buen aporte y quiero compartirlo.
.desktop-menu ul li:last-child a es mas especifico que .desktop-menu ul li a y por eso se aplican estilos propios a ese elemento sin tomar en cuenta los que hay dentro de la clase .desktop-menu ul li a ?
Así es, las pseudoclases son más específicas que los elementos, por eso es que ignora el selector .desktop-menu ul li a :D
Gracias por la aclaración
Maquetado de la clase
|
HTML
.desktop-menu {width: 100px;height: auto;border: 1px solid var(--very-light-pink); border-radius: 6px;padding: 20px 20px 0 20px;}.desktop-menu ul { list-style: none;padding:0;margin:0;}.desktop-menu ul li { text-align: end;}.desktop-menu ul li:nth-child(1),.desktop-menu ul li:nth-child(2){ font-weight: bold;}.desktop-menu ul li:last-child { padding-top: 20px; border-top: 1px solid var(--very-light-pink);}.desktop-menu ul li:last-child a {color:var(--hospital-green); font-size: 12px;}.desktop-menu ul li a {color:var(--black); margin-bottom: 20px;display: inline-block; text-decoration: none;}
yo suelo usar medidas relativas en css, como el %, rem, entre otra, se me hace mas sencillo. y tambien es algo responsive
No noté que se borraron algunos espacios a la hora de pegar el código, disculpen uwu
Como crear la estructura inicial con emmet
.desktop-menu>ul>(li>a.title)*3
Borra el 3 y lo vuelve a escribir
Thanks for sharing with us 👍🏻
Para el bold de los items era más fácil ponerlo así, si en adelante piden poner más items en el menú se tendría que agregar los .desk-menu ul li:nth-child(1), .desk-menu ul li:nth-child(2) ,.desk-menu ul li:nth-child(3), .desk-menu ul li:nth-child(4); y así sucesivamente
.desk-menu ul li{ text-align: end; font-weight: bold;}.desk-menu ul li:last-child{padding: 20px 0px 0px; border-top: 1px solid var(--very-light-pink); font-weight: normal;}
Comparto mis resultados:
Quedó muy bien, Luis.
¿No se supone que html semantico es mejor el uso de la etiqueta "nav" para crear una barra de menu?
Sí, pero este es un menú, en la clase 18 se ve la nav bar. Saludos!
Me reté a maquetar la cajita del menú antes de ver el vídeo y la única diferencia fue la forma como ubiqué los elementos sin usar la propiedad display. Definitivamente se siente genial saber que estás aprendiendo y mejorando poco a poco.
_
Aquí el resultado
Y el código
Les dejo un atajo para escribir esta estructura en Visual Studio Code:
div.desktop-menu>ul>li*3
(Presiono enter y me devuelve)
<div class="desktop-menu">
<ul>
<li></li><li></li><li></li></ul></div>
Aquí le estoy diciendo que quiero un <DIV> con una clase llamada DESKTOP-MENU, que adentro tenga una etiqueta <UL> y que adentro de ella tenga tres <LI>.
Espero que le sirva a alguien!
Saludos
Escribió --back, pero igual cambió de color, ¿por qué?
Hey, Miguel... Llego un poco tarde jaja... Pero si tienes la duda o quieres recordar el bello momento de cuando no supiste que onda te explico... Por defecto pone el texto en negro al no reconocer la variable, así hubiese puesto 'Perro' Cambiaría a negro porque es el color default de HTML :D Saludos!
No le veo mucho sentido hacer todo esto por separado, alguien me explica el por que?
Hola, el proyecto de este curso se retoma en el "Curso práctico de React.js", en el que se transforman las diferentes partes en componentes de react. Te dejo el link del curso y una de las clases las que se menciona: