Guía práctica · aprende construyendo

Tu primera página con TrummerWork.

No es solo una galería de componentes: aquí vas a resolver pequeños retos, probar los cambios y construir una página desde cero.

01 · Entiende

HTML primero

Elige elementos por su significado y agrega clases para darles estilo.

02 · Combina

Clases pequeñas

Combina tipografía, color, espacio y layout sin escribir cada regla desde cero.

03 · Construye

Una página real

Termina con una landing page sencilla inspirada en los ejemplos del proyecto.

Tu recorrido

Una ruta de práctica, no un catálogo

En cada etapa primero entiendes una idea, luego la aplicas y al final compruebas lo aprendido. Intenta el reto antes de mirar el ejemplo de código.

Tu avance en esta sesión: 0 de 6 retos completados

Lección 01 · preparación

Instala TrummerWork

El navegador lee el CSS para presentar la página. El JavaScript activa interacciones como el menú móvil y los sliders. Puedes usar el CDN oficial o descargar los archivos del proyecto.

Opción A · CDN

Enlaza los archivos publicados. No necesitas copiarlos a tu carpeta.

  • CSS: https://trummerwork-project.web.app/style.css
  • JavaScript: https://trummerwork-project.web.app/script.js

Opción B · archivos locales

Descarga el framework y mantén rutas relativas correctas desde tu HTML.

Descargar TrummerWork

Primero intenta · prepara tu archivo

  1. Crea un archivo llamado index.html.
  2. Piensa: ¿dónde pondrías el enlace CSS para que cargue al abrir la página?
  3. ¿Qué archivo agregarías cuando luego quieras un menú móvil?
Comprueba tu decisión

¿Qué archivo define el aspecto visual de una tarjeta?

HTML · documento inicial usando CDN
<!doctype html>
<html lang="es">
<head>
  <!-- Codificación y adaptación al ancho del dispositivo -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Mi primera página</title>

  <!-- Hoja de estilos del framework -->
  <link rel="stylesheet"
        href="https://trummerwork-project.web.app/style.css">
</head>
<body>
  <!-- Tu contenido comienza aquí -->
  <h1 class="titulo titulo-grande texto-primario">Hola, mundo</h1>
  <p class="texto texto-mediano">Mi primera página con TrummerWork.</p>

  <!-- Necesario para componentes interactivos -->
  <script src="https://trummerwork-project.web.app/script.js"></script>
</body>
</html>
HTML · cargar archivos locales
<!-- En el head: ajusta la ruta a donde guardaste el CSS -->
<link rel="stylesheet" href="Example Pags/style.css">

<!-- Antes de cerrar body: ajusta la ruta al JavaScript -->
<script src="Example Pags/script.js"></script>

¿Qué archivo necesito?

style.css contiene estilos, utilidades y componentes. script.js es necesario para los sliders y otros comportamientos interactivos; los estilos básicos no dependen de JavaScript.

Lección 02 · los fundamentos

Una clase, una responsabilidad

El elemento HTML expresa qué es el contenido; las clases agregan presentación y distribución. Puedes combinar varias clases en un solo atributo, separadas por espacios.

Primero intenta · estructura una idea

Imagina una página para una cafetería. Anota qué elemento usarías para su nombre y cuál para describirla. Luego decide qué clase cambia el tamaño y cuál cambia el color.

Comprueba tu decisión

¿Cuál es la mejor opción para el título principal de esa página?

Un mensaje que destaca

Este párrafo combina clases para el tamaño y el color del texto.

Continuar aprendiendo
HTML · combinar clases
<!-- h2 conserva la jerarquía de encabezados -->
<h2 class="titulo titulo-mediano texto-primario">
  Un mensaje que destaca
</h2>

<!-- Las clases se separan con espacios -->
<p class="texto texto-grande texto-secundario">
  Este párrafo combina tamaño y color.
</p>

<!-- Un enlace que parece botón sigue siendo navegación -->
<a class="boton boton-primario texto-blanco" href="#componentes">
  Continuar aprendiendo
</a>
Regla sencilla: selecciona primero el elemento semántico correcto —por ejemplo, h1 para el título principal, p para un párrafo y button para una acción— y luego ajusta su apariencia.

Lección 03 · presentación

Estiliza texto y color

Usa elementos de encabezado en orden y añade las clases de TrummerWork para definir tamaño, familia tipográfica, alineación y énfasis.

Jerarquía de títulos

Título principal

Título de sección

Título de bloque

Subtítulo para introducir una idea.

Un párrafo de tamaño normal.

Una nota o metadato en menor tamaño.

Familias tipográficas

Inter · Texto para interfaces

Lato · Texto para interfaces

Merriweather · Texto editorial

Poppins · Títulos expresivos

Bebas Neue · Impacto visual

Alineación

Alineado al inicio

Alineado al centro

Alineado al final

Énfasis y transformación

Negrita para destacar.

Cursiva para dar énfasis.

Texto en mayúsculas.

Texto subrayado.

Texto con sombra.

HTML · títulos y énfasis
<!-- Un h1 para el tema principal de la página -->
<h1 class="titulo titulo-largo texto-primario">Título principal</h1>

<!-- Encabezados secundarios mantienen el orden semántico -->
<h2 class="titulo titulo-mediano">Título de una sección</h2>
<h3 class="titulo titulo-pequeño">Título de un bloque</h3>

<!-- El texto puede combinar tamaño, familia y color -->
<p class="texto texto-grande texto-inter texto-secundario">
  Una idea <strong class="texto-negrita">importante</strong>.
</p>

<!-- Alineación y transformación son clases independientes -->
<p class="texto-centro texto-mayusculas">Aviso centrado</p>

Color y resaltado

Texto blanco sobre fondo primario

Texto blanco sobre fondo secundario

Texto negro sobre gris

Prueba utilidades como texto-primario, texto-secundario, texto-negro, texto-blanco, fondo-primario, fondo-secundario y las variantes texto-resaltado-*.

Laboratorio · cambia el estilo

Antes de leer el código siguiente, prueba los controles. Cada menú añade una clase al mismo texto: una controla el tamaño y otra el color. Fíjate en que el contenido no cambia, solo su presentación.

Una frase de ejemplo que tú puedes transformar.

Clases aplicadas: texto texto-mediano texto-primario

HTML · color y resaltado
<!-- Color de texto sin cambiar su fondo -->
<p class="texto-primario">Un título o enlace importante</p>

<!-- Combina un fondo con texto de buen contraste -->
<div class="fondo-azul texto-blanco padding-mediano">
  Texto claro sobre una superficie azul
</div>

<!-- Resalta solo la parte importante del párrafo -->
<p>Revisa esta <span class="texto-resaltado-amarillo">idea clave</span>.</p>

Comprueba el contraste

Una combinación puede ser difícil de leer aunque sus colores sean bonitos. Verifica el contraste especialmente en texto pequeño y botones.

Lección 04 · distribución

Organiza la página con layout

Usa un contenedor para el ancho general, Grid para grupos bidimensionales y Flexbox para alinear elementos en una fila o columna.

Antes de probar: si quieres tres tarjetas del mismo nivel, ¿qué elemento debe definir las columnas: cada tarjeta o el contenedor que las agrupa? El laboratorio te deja comprobar tu predicción.

Contenedor

contenedor centra el contenido y controla su ancho. Prueba contenedor-completo, contenedor-grande, contenedor-mediano y contenedor-pequeño según el espacio que necesitas.

Área de contenido dentro del contenedor

Grid · tarjetas en columnas

Planifica

Divide una meta en acciones.

Construye

Combina las clases necesarias.

Revisa

Prueba en distintos anchos.

HTML · grid de tres tarjetas
<!-- El padre define el grid, las columnas y la separación -->
<section class="display-grid columna-3 espacio-entre-2">
  <!-- Cada hijo ocupa una celda de la cuadrícula -->
  <article class="tarjetas fondo-blanco">
    <div class="contenedor-cuerpo-tarjeta">
      <h2 class="titulo titulo-pequeño">Planifica</h2>
      <p>Divide una meta en acciones.</p>
    </div>
  </article>
  <!-- Repite el patrón para los otros bloques -->
  <article class="tarjetas fondo-blanco">
    <div class="contenedor-cuerpo-tarjeta">
      <h2 class="titulo titulo-pequeño">Construye</h2>
      <p>Combina las clases necesarias.</p>
    </div>
  </article>
  <article class="tarjetas fondo-blanco">
    <div class="contenedor-cuerpo-tarjeta">
      <h2 class="titulo titulo-pequeño">Revisa</h2>
      <p>Prueba en distintos anchos.</p>
    </div>
  </article>
</section>

Flexbox · alinear una fila

Nombre del equipo Ver proyecto
HTML · Flexbox para una barra de acciones
<!-- Activa Flexbox en el padre y alinea sus hijos -->
<div class="display-flex fila centro-vertical espacio-entre-2">
  <strong>Nombre del equipo</strong>
  <a class="boton boton-primario texto-blanco" href="#proyecto">
    Ver proyecto
  </a>
</div>

Laboratorio · cambia la cuadrícula

Un catálogo tiene dos tipos de contenido y una pantalla grande puede mostrar ambos en paralelo. Cambia las columnas y observa qué controla la clase del padre.

Producto A

Descripción breve.

Producto B

Descripción breve.

Producto C

Descripción breve.

Observa la clase del contenedor: columna-3. La misma clase en cada tarjeta no organizaría la cuadrícula.

Espaciado y bordes

Combina clases como margen-abajo, padding-mediano, borde y borde-redondo-mediano.

Espacio interior y esquinas redondeadas

Diseño adaptable

Las cuadrículas del framework se ajustan mediante media queries. Revisa el resultado en escritorio, tablet y móvil.

Breakpoints usados por el framework: 1024, 900, 768, 640 y 576 píxeles.

Lección 05 · piezas reutilizables

Construye con componentes

Los componentes son estructuras HTML con clases que trabajan juntas. Para aprender a elegirlos, parte de la necesidad de la persona que usará el sitio; no empieces por buscar una clase al azar.

La estructura enlaza un control de menú con la lista de navegación. El script cierra el menú móvil al seleccionar un enlace.

HTML · navbar del framework
<!-- El header permite que la navbar sticky se mantenga visible -->
<header class="navbar-contenedor-seguimiento">
  <nav class="navbar navbar-blue navbar-seguimiento"
       aria-label="Navegación principal">
    <!-- Marca o nombre del sitio -->
    <a class="navbar-brand" href="#inicio">Mi sitio</a>

    <!-- Control móvil asociado a la etiqueta mediante id y for -->
    <input type="checkbox" id="menu"
           class="navbar-toggle" aria-controls="enlaces">
    <label class="navbar-toggle-label" for="menu"
           aria-label="Abrir o cerrar navegación">
      <span class="navbar-toggle-icon"></span>
    </label>

    <!-- Enlaces que aparecen en la barra y el menú móvil -->
    <ul class="navbar-menu" id="enlaces">
      <li><a class="navbar-link" href="#producto">Producto</a></li>
      <li><a class="navbar-link" href="#contacto">Contacto</a></li>
    </ul>
  </nav>
</header>

Botones y enlaces

Usa un botón para una acción y un enlace para navegar. Las variantes comparten la misma estructura básica.

Tarjetas

Combina tarjetas, una imagen opcional y contenedor-cuerpo-tarjeta.

Persona organizando notas de trabajo

Una idea en marcha

Describe el proyecto en una frase corta.

Leer más
HTML · tarjeta con imagen
<!-- article agrupa una pieza de contenido independiente -->
<article class="tarjetas fondo-blanco">
  <!-- Imagen opcional con texto alternativo descriptivo -->
  <img class="tarjetas-imagen" src="proyecto.jpg"
       alt="Personas trabajando en un proyecto">

  <!-- Este contenedor aplica espacio al contenido de la tarjeta -->
  <div class="contenedor-cuerpo-tarjeta">
    <p class="texto texto-pequeño texto-primario">PROYECTO</p>
    <h2 class="titulo titulo-pequeño">Una idea en marcha</h2>
    <p>Describe el proyecto en una frase corta.</p>
    <a class="link" href="#detalles">Leer más</a>
  </div>
</article>

Formulario

Conecta cada label con el campo correspondiente usando for e id. Las clases dan estilo, pero no envían los datos por sí solas.

Vista previa

Solo es visual

Para enviar un formulario necesitas conectar un servicio o escribir la lógica que procese los datos. No publiques información privada en esta demostración.

HTML · formulario simple
<!-- El formulario agrupa etiquetas y campos relacionados -->
<form class="formulario-simple fondo-blanco">
  <!-- for debe coincidir con el id del campo -->
  <label class="labeltxt" for="correo">Correo</label>
  <input class="form-input" id="correo" type="email"
         autocomplete="email" placeholder="tu@ejemplo.com">

  <label class="labeltxt" for="mensaje">Mensaje</label>
  <textarea class="message-input" id="mensaje"
            placeholder="Escribe tu mensaje"></textarea>

  <!-- El servidor o servicio debe procesar el envío -->
  <button class="send-boton" type="submit">Enviar</button>
</form>

Aviso y cita

Consejo de diseño

Usa un aviso para una recomendación importante; usa una cita para destacar una nota o fragmento breve.

“Una página clara ayuda a que cada idea encuentre su lugar.”

HTML · aviso y cita
<!-- Aviso con título y mensaje -->
<aside class="aviso fondo-azul texto-blanco">
  <p class="titulo-aviso">Consejo de diseño</p>
  <p>Destaca una recomendación que el usuario debe notar.</p>
</aside>

<!-- Cita para una nota o fragmento breve -->
<blockquote class="cita cita-pequeña">
  Una idea destacada para recordar.
</blockquote>

Slider con imagen y texto

Las diapositivas requieren una pista común. La variante con indicadores genera los controles de puntos automáticamente. El script del framework activa los controles y la transición.

Equipo de trabajo colaborando alrededor de una mesa

Ejemplo práctico

Empieza con una idea.

Agrega una imagen, un título y una acción.

Ver el proyecto final
Equipo revisando una propuesta de proyecto

Después, organiza.

Usa los componentes y las utilidades que ya conoces.

HTML · slider de portada
<!-- Hero define la presentación; indicadores controlan la navegación -->
<section class="slider slider-con-indicadores slider-hero"
         aria-label="Presentación del proyecto">
  <!-- El script desplaza esta pista entre diapositivas -->
  <div class="slider-pista">
    <!-- Una diapositiva contiene imagen y texto -->
    <article class="slider-diapositiva">
      <img src="equipo.jpg" alt="Equipo colaborando en una mesa">
      <!-- Combina una apariencia y una posición para el texto -->
      <div class="slider-texto slider-texto-oscuro slider-texto-izquierda-abajo">
        <h1 class="titulo-largo texto-blanco">Empieza con una idea.</h1>
        <p class="texto-grande texto-blanco">Descripción breve.</p>
        <a class="boton boton-primario texto-blanco" href="#contenido">
          Conocer más
        </a>
      </div>
    </article>
    <!-- Duplica article para añadir otra diapositiva -->
    <article class="slider-diapositiva">
      <img src="proyecto.jpg" alt="Equipo revisando un proyecto">
      <div class="slider-texto slider-texto-vidrio slider-texto-centro">
        <h2 class="titulo-grande texto-blanco">Otra idea.</h2>
      </div>
    </article>
  </div>
  <!-- Controles anterior y siguiente -->
  <button class="slider-anterior" type="button"
          aria-label="Diapositiva anterior">‹</button>
  <button class="slider-siguiente" type="button"
          aria-label="Siguiente diapositiva">›</button>
  <!-- El script añade un indicador por diapositiva -->
  <div class="slider-indicadores"></div>
</section>

También existen slider-basico, slider-fundido, slider-zoom y slider-compacto. Encuentra estructuras y variantes adicionales en la documentación de sliders.

Tu reto · elige el componente adecuado

Escribe en una hoja qué componente usarías para cada necesidad antes de revisar la respuesta:

  • Navegar a otra sección: enlace.
  • Ejecutar una acción: botón.
  • Mostrar varios elementos de una colección: tarjetas dentro de Grid.
  • Recibir datos del visitante: formulario conectado a un servicio.
Comprueba lo aprendido

Quieres que el visitante envíe un formulario. ¿Qué elemento representa esa acción?

Lección 06 · práctica final

Construye tu landing page

Ahora aplicarás las decisiones de las lecciones anteriores a una página para una idea propia. No empieces copiando el ejemplo: primero organiza tu contenido y construye una versión sencilla en tu editor.

Construye en este orden

  1. Escribe el nombre del proyecto, una frase que lo explique y una acción principal.
  2. Agrega navegación que apunte a secciones reales de tu página.
  3. Crea tres beneficios como tarjetas dentro de una cuadrícula.
  4. Añade una sección de contacto y un footer con enlaces.
  5. Aplica colores, tipografía y espacios; después revisa el resultado en móvil.

Comprueba tu trabajo

  • ¿Cada enlace funciona y llega a un destino existente?
  • ¿Usaste un solo h1 y encabezados en orden?
  • ¿Las tarjetas se acomodan sin desbordarse?
  • ¿Las imágenes tienen texto alternativo?
  • ¿Avisaste si el formulario todavía no envía datos?

Tu entrega

Construye al menos estas cuatro partes en tu archivo: una cabecera con navegación, una presentación con llamada a la acción, tres tarjetas de beneficios y un footer. Cuando funcione, cambia el ancho de la pantalla y corrige lo que se rompa.

Última comprobación

¿Dónde pones display-grid columna-3 para organizar tres tarjetas?

¿Quieres comparar tu estructura?

Cuando ya tengas un primer intento, compara tu orden de secciones con este ejemplo y modifica el contenido para que represente tu idea.

Una idea para el futuro

Cultiva algo mejor.

Una descripción breve y una acción clara para empezar.

Descubrir beneficios

Simple

Una promesa clara.

Cercano

Beneficios concretos.

Sostenible

Una acción para continuar.

HTML · estructura resumida del proyecto final
<!-- Navbar: identidad y enlaces a secciones -->
<header class="navbar-contenedor-seguimiento">
  <nav class="navbar navbar-green navbar-seguimiento"
       aria-label="Navegación principal">
    <a class="navbar-brand" href="#inicio">VERDE</a>
    <ul class="navbar-menu">
      <li><a class="navbar-link" href="#beneficios">Beneficios</a></li>
      <li><a class="navbar-link" href="#contacto">Contacto</a></li>
    </ul>
  </nav>
</header>

<!-- Main contiene el tema principal de la página -->
<main id="inicio">
  <!-- Hero: propuesta principal y llamada a la acción -->
  <section class="fondo-secundario texto-blanco padding-grande texto-centro">
    <p class="texto texto-mayusculas texto-blanco">Una idea para el futuro</p>
    <h1 class="titulo titulo-grande texto-blanco">Cultiva algo mejor.</h1>
    <p class="texto texto-grande texto-blanco">Descripción de tu proyecto.</p>
    <a class="boton fondo-blanco texto-primario" href="#beneficios">
      Descubrir beneficios
    </a>
  </section>

  <!-- Grid: presenta beneficios en tarjetas -->
  <section id="beneficios" class="contenedor display-grid columna-3 espacio-entre-2">
    <article class="tarjetas fondo-blanco">
      <div class="contenedor-cuerpo-tarjeta">
        <h2 class="titulo titulo-pequeño">Simple</h2>
        <p>Un beneficio concreto.</p>
      </div>
    </article>
    <!-- Duplica tarjetas para más beneficios -->
  </section>
</main>

<!-- Footer: marca, navegación y créditos -->
<footer class="footer">
  <div class="footer-contenido">
    <div class="footer-superior">
      <section class="footer-marca">
        <h2>VERDE</h2>
        <p>Descripción corta del proyecto.</p>
      </section>
      <nav class="footer-columna" aria-label="Enlaces">
        <h2>Explorar</h2>
        <a href="#beneficios">Beneficios</a>
      </nav>
    </div>
    <div class="footer-inferior">
      <p>© Mi proyecto</p>
      <a href="#inicio">Volver arriba</a>
    </div>
  </div>
</footer>

Siguiente paso

Abre Nexo para ver otro ejemplo completo del framework y usa la documentación como referencia de clases.

Ya tienes la base

Sigue experimentando: reemplaza el contenido, prueba las combinaciones de clases y revisa cómo cambia cada componente en distintos tamaños de pantalla.