Tema 13 · Maquetación

Div, Span, Clases e Identificadores (ID)

Aprende a agrupar contenido con <div> y <span>, y a conectar tu diseño y lógica con clases reutilizables e IDs únicos.

Contenedores Genéricos: <div> y <span>

HTML provee dos etiquetas sin significado semántico intrínseco, pensadas específicamente para agrupar elementos y aplicarles estilos CSS o manipularlos con JavaScript:

  • <div> (División): Contenedor genérico a nivel de bloque. Agrupa múltiples elementos (párrafos, títulos, imágenes) para crear tarjetas, columnas o paneles.
  • <span>: Contenedor genérico en línea. Se utiliza para envolver una frase, una sola palabra o un icono dentro de un texto continuo sin romper el renglón.

Clases (class) vs Identificadores (id)

Característica El Atributo class El Atributo id
Unicidad Reutilizable: múltiples elementos pueden compartir exactamente la misma clase. Estrictamente único: solo puede existir un elemento con ese id específico en todo el documento.
Múltiples valores Permite múltiples clases separadas por espacios: class="boton primario grande". Solo admite un único valor alfanumérico: id="menu-principal".
Selector en CSS Punto (.boton) Almohadilla o numeral (#menu-principal)
Uso en JavaScript document.querySelectorAll('.clase') document.getElementById('mi-id')
Navegación No sirve como ancla directa. Sirve como ancla de enlace con href="#mi-id".

⚡ Maquetación con Divs, Clases y Spans

Observa cómo las clases permiten reutilizar estilos de tarjeta, y los span destacan palabras clave dentro de un párrafo:

index.html
Solo lectura
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Divs, Spans, Clases e IDs</title>
  <style>
    body { font-family: Arial, Helvetica, sans-serif; padding: 25px; background: #f8fafc; }
    
    /* Regla reutilizable para todas las tarjetas */
    .tarjeta-curso {
      background: white;
      border: 1px solid #e2e8f0;
      border-radius: 10px;
      padding: 20px;
      margin-bottom: 15px;
      max-width: 480px;
      box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    }

    /* Regla para el elemento con ID específico */
    #curso-destacado {
      border-left: 5px solid #6366f1;
      background: #faf5ff;
    }

    /* Estilos para spans en línea */
    .badge-tecnologia {
      background: #e0e7ff;
      color: #4338ca;
      font-size: 0.75rem;
      font-weight: bold;
      padding: 3px 8px;
      border-radius: 4px;
    }

    .texto-precio {
      color: #059669;
      font-weight: bold;
      font-size: 1.1rem;
    }
  </style>
</head>
<body>

  <!-- Tarjeta con ID único y clase compartida -->
  <div id="curso-destacado" class="tarjeta-curso">
    <span class="badge-tecnologia">RECOMENDADO</span>
    <h3 style="margin: 8px 0;">Desarrollo Web Fullstack</h3>
    <p>
      Aprende a maquetar con <span style="color: #e34f26; font-weight: bold;">HTML5</span> y diseñar con <span style="color: #2563eb; font-weight: bold;">CSS3</span>.
    </p>
    <span class="texto-precio">Gratis con Kilopolis</span>
  </div>

  <!-- Tarjeta regular usando la misma clase -->
  <div class="tarjeta-curso">
    <span class="badge-tecnologia">BÁSICO</span>
    <h3 style="margin: 8px 0;">Algoritmos y Lógica</h3>
    <p>Comprende la resolución sistemática de problemas antes de codificar.</p>
    <span class="texto-precio">Disponible</span>
  </div>

</body>
</html>
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de HTML5 y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.