Tu primera página: una tarjeta con tu nombre, a qué te dedicas y tus enlaces, centrada, con modo oscuro automático y adaptada al móvil.
5 pasos
40 minutos aproximadamente
126 líneas de código
Editor en vivo
Lo que vas a construir
El mejor primer proyecto web: pequeño, útil y que puedes publicar el mismo día. Vas a escribir el HTML de una tarjeta personal y darle estilo con CSS, desde centrarla en la pantalla hasta que cambie de colores sola con el modo oscuro del sistema.
Lo que vas a practicar
Estructurar una página con HTML
Centrar con CSS Grid
Dar estilo a enlaces y botones
Usar variables CSS
Modo oscuro y diseño para móvil
Resultado final
Antes de empezar, conviene haber hecho estas lecciones
Escribe primero el contenido, sin pensar en el aspecto: el nombre en un <h1> (el título principal de la página), a qué te dedicas, una frase sobre ti y una lista con tus enlaces. El navegador ya lo muestra, aunque con su estilo por defecto.
mailto: abre el programa de correo con tu dirección. Cambia los datos de ejemplo por los tuyos.
index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Lucía Martín · Diseñadora web</title>
<link rel="stylesheet" href="estilos.css">
</head>
<body>
<main class="tarjeta">
<h1>Lucía Martín</h1>
<p class="cargo">Diseñadora web</p>
<p>Hago webs claras, rápidas y accesibles para pequeños negocios. Me encanta el café y los mapas antiguos.</p>
<ul class="enlaces">
<li><a href="mailto:lucia@ejemplo.es">Correo</a></li>
<li><a href="https://github.com/">GitHub</a></li>
<li><a href="https://www.linkedin.com/">LinkedIn</a></li>
</ul>
</main>
</body>
</html>
estilos.css
/* Los estilos llegan en el paso 2 */
2
Paso 2 de 5
Centrar y dar forma a la tarjeta
display: grid con place-items: center en el body centra la tarjeta en horizontal y en vertical. min-height: 100vh hace que el cuerpo ocupe al menos toda la altura de la ventana.
El círculo con tus iniciales es un div con el mismo ancho y alto y border-radius: 50%. Lleva aria-hidden="true" porque es decorativo: el nombre ya está en el título.
index.htmlLo nuevo, resaltado
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Lucía Martín · Diseñadora web</title>
<link rel="stylesheet" href="estilos.css">
</head>
<body>
<main class="tarjeta">
<div class="avatar" aria-hidden="true">LM</div>
<h1>Lucía Martín</h1>
<p class="cargo">Diseñadora web</p>
<p>Hago webs claras, rápidas y accesibles para pequeños negocios. Me encanta el café y los mapas antiguos.</p>
<ul class="enlaces">
<li><a href="mailto:lucia@ejemplo.es">Correo</a></li>
<li><a href="https://github.com/">GitHub</a></li>
<li><a href="https://www.linkedin.com/">LinkedIn</a></li>
</ul>
</main>
</body>
</html>
Con display: flex y gap, los enlaces se colocan en fila con la misma separación. Quitando el subrayado y añadiendo relleno y border-radius: 999px parecen pastillas.
transition suaviza el cambio al pasar el ratón y :focus-visible marca bien el enlace cuando se navega con el teclado.
Los colores se repiten en varios sitios. Guardándolos en variables CSS (--acento) en :root, se cambian en un solo lugar.
Así el modo oscuro es fácil: dentro de @media (prefers-color-scheme: dark) se da otro valor a las mismas variables, y la tarjeta cambia sola cuando el sistema está en modo oscuro.
En pantallas estrechas, los tres enlaces en fila no caben bien: una consulta @media (max-width: 420px) los apila en columna y reduce el relleno.
Por último, respeta a quien pide menos movimiento en su sistema quitando la animación con prefers-reduced-motion. Tu tarjeta está lista para publicarse, por ejemplo con GitHub Pages.
Con tu permiso usamos Google Analytics, que guarda cookies, para saber cuántas personas visitan la web y qué páginas les resultan útiles. No usamos cookies de publicidad y tus archivos nunca salen de tu navegador. Puedes cambiar de opinión cuando quieras en «Configurar cookies», al pie de la página. Más información.