Código con Flexbox (versión moderna)

 


html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Menú con Flexbox</title>
</head>
<style>
body {
    margin: 0;
    padding: 0;
}

ul {
    list-style-type: none;    /* Quita los puntos de la lista */
    margin: 0;
    padding: 0;
    background-color: #333333;
    
    /* Flexbox propiedades */
    display: flex;            /* Activa flexbox en el contenedor */
    /* flex-direction: row;   /* Por defecto es row, no necesario escribirlo */
}

ul li a {
    display: block;           /* Hace todo el área clickable */
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
}

ul li a:hover {
    background-color: #111111;
}
</style>
<body>
    <nav>
        <ul>
            <li><a href="#home">Home</a></li>
            <li><a href="#news">News</a></li>
            <li><a href="#contact">Contact</a></li>
            <li><a href="#about">About</a></li>
        </ul>
    </nav>
</body>
</html>

¿Qué cambió con Flexbox?

1. Eliminamos:

css
ul li {
    float: left;        /* ❌ Ya no necesario */
}

ul {
    overflow: hidden;   /* ❌ Ya no necesario para contener floats */
}

2. Agregamos:

css
ul {
    display: flex;      /* ✅ Activa flexbox en el contenedor */
}

¿Cómo funciona Flexbox aquí?

  1. display: flex; en el <ul>:

    • Convierte el <ul> en un contenedor flex

    • Sus hijos directos (los <li>) se convierten en ítems flex

    • Por defecto, los ítems flex se alinean en fila horizontal

  2. Comportamiento automático de flexbox:

    • Los <li> se colocan uno al lado del otro automáticamente

    • No necesitamos float para nada

    • El contenedor <ul> mantiene su altura sin necesidad de overflow: hidden

Ventajas de Flexbox en este caso:

AspectoCon FloatCon Flexbox
CódigoNecesita overflow: hiddenMás limpio, menos código
AlineaciónLimitadaMuchas opciones (justify-contentalign-items)
ResponsiveMás complicadoFácil de adaptar

Podemos mejorar aún más con Flexbox:

css
ul {
    display: flex;
    /* Opcional: distribuir los items */
    justify-content: flex-start;  /* Alineados a la izquierda (por defecto) */
    /* justify-content: center;      Centrados */
    /* justify-content: space-around; Espacio alrededor */
    /* justify-content: space-between; Espacio entre items */
}

Resultado visual con Flexbox:

text
[ Home ][ News ][ Contact ][ About ]  ← Exactamente igual que antes

¡Pero con menos código y más flexibilidad para futuros cambios! 🚀

¿Te gustaría probar alguna de las opciones de justify-content para ver cómo cambia la alineación del menú?

Comentarios

Entradas más populares de este blog

Tutorial de CSS: De Cero a Estilizar tu Primera Página Web

layouts

Proyecto Práctico: Tarjeta de Perfil