Stepper de progreso con pseudo-elementos y Flexbox

Stepper de progreso horizontal con CSS usando Flexbox y pseudo-elementos, totalmente responsive y personalizable para interfaces multi-step.

Breve Introducción

Stepper de progreso con pseudo-elementos y Flexbox (css)
DESCRIPCIÓN:
Un componente CSS para crear un stepper de progreso horizontal usando Flexbox y pseudo-elementos. El stepper muestra visualmente los pasos completados, el actual y los futuros con colores y estilos distintos. Es completamente responsive y personalizable.

NOTAS ADICIONALES:
Este stepper es ideal para interfaces web que requieren mostrar progreso en múltiples pasos, como formularios multi-step o procesos guiados. Es fácilmente extensible y modificable mediante CSS.

EXPLICACIONES:
- El contenedor <ul> usa display: flex para disponer los pasos horizontalmente.
- Los <li> representan cada paso y tienen posición relativa para colocar los pseudo-elementos.
- El pseudo-elemento ::before crea el círculo numerado o icono del paso.
- El pseudo-elemento ::after crea la línea de conexión entre pasos, excepto el último.
- Las clases .completed y .current modifican colores y estilos para indicar el estado del paso.
- Las variables CSS permiten personalizar fácilmente colores y tamaños sin modificar el código base.

Código de Ejemplo: css

/*
  Stepper de progreso con Flexbox y pseudo-elementos
  - Círculos numerados para cada paso
  - Líneas de conexión entre pasos
  - Estados: completado, actual, futuro
  - Responsive y personalizable mediante variables CSS
*/

:root {
  /* Variables para colores y tamaños */
  --stepper-circle-size: 30px;
  --stepper-line-height: 4px;
  --color-completed: #4caf50; /* verde para completado */
  --color-current: #2196f3;   /* azul para paso actual */
  --color-future: #cccccc;    /* gris para pasos futuros */
  --color-text: #333333;
  --font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.stepper {
  display: flex;
  justify-content: space-between;
  list-style: none;
  padding: 0;
  margin: 20px 0;
  font-family: var(--font-family);
}

.stepper li {
  position: relative;
  flex: 1;
  text-align: center;
  color: var(--color-future);
  cursor: default;
}

/* Círculo numerado o icono del paso */
.stepper li::before {
  content: counter(step-counter);
  counter-increment: step-counter;
  width: var(--stepper-circle-size);
  height: var(--stepper-circle-size);
  line-height: var(--stepper-circle-size);
  border-radius: 50%;
  background-color: var(--color-future);
  color: white;
  display: block;
  margin: 0 auto 10px auto;
  font-weight: bold;
  font-size: 1rem;
  box-shadow: 0 0 3px rgba(0,0,0,0.2);
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* Línea de conexión entre pasos (excepto último) */
.stepper li::after {
  content: '';
  position: absolute;
  top: calc(var(--stepper-circle-size) / 2 - var(--stepper-line-height) / 2);
  left: 50%;
  width: 100%;
  height: var(--stepper-line-height);
  background-color: var(--color-future);
  z-index: -1;
  transition: background-color 0.3s ease;
}

/* Quita la línea del último paso */
.stepper li:last-child::after {
  content: none;
}

/* Estado completado */
.stepper li.completed {
  color: var(--color-completed);
  cursor: pointer;
}

.stepper li.completed::before {
  background-color: var(--color-completed);
  content: '\2713'; /* marca de verificación */
  font-size: 1.2rem;
}

.stepper li.completed::after {
  background-color: var(--color-completed);
}

/* Estado actual */
.stepper li.current {
  color: var(--color-current);
  font-weight: bold;
}

.stepper li.current::before {
  background-color: var(--color-current);
  content: counter(step-counter);
}

.stepper li.current::after {
  background-color: var(--color-future);
}

/* Reinicia el contador para numerar los pasos */
ul.stepper {
  counter-reset: step-counter;
}

/* Texto descriptivo debajo del círculo */
.stepper li span {
  display: block;
  font-size: 0.85rem;
  margin-top: 5px;
  user-select: none;
}

/* Responsive: reduce tamaños en pantallas pequeñas */
@media (max-width: 480px) {
  :root {
    --stepper-circle-size: 24px;
    --stepper-line-height: 3px;
  }
  .stepper li::before {
    font-size: 0.85rem;
    line-height: var(--stepper-circle-size);
  }
  .stepper li span {
    font-size: 0.75rem;
  }
}

/* Ejemplo HTML para usar con este CSS:
<ul class="stepper">
  <li class="completed"><span>Login</span></li>
  <li class="completed"><span>Dirección</span></li>
  <li class="current"><span>Pago</span></li>
  <li><span>Confirmar</span></li>
</ul>
*/
×
×
×
¿Quieres regenerar la respuesta?
×
Exportar chat
Elige el formato de exportación
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Estás a punto de cerrar el chat y pasar al generador de imágenes. Si no has iniciado sesión, perderás nuestro chat. ¿Confirmas?
👁 Estás viendo un chat compartido en modo temporal. No se guardará.
💬
×
Prompts guardados
×
Nota privada
×
Etiqueta
×
Buscar en todos los chats
×
Tus insights
Analizando…
×
Preferencias de IA
Nombre del asistente 30
Longitud de las respuestas
Modelo de IA
Respuestas estructuradas
Incluir ejemplos
Usar emojis
Guíame, no resuelvas Pistas y preguntas en vez de la solución hecha
Más ajustes →
×
Compartir este chat
Quien abra este enlace podrá ver el chat o añadirlo a su perfil como chat propio.
⚠️ Atención: también se compartirán los archivos adjuntos del chat. Quien lo añada recibirá una copia en su propia carpeta.
Chat compartido
Alguien ha compartido un chat contigo. ¿Solo quieres verlo o añadirlo a tus chats?
⚠️ Atención: también se compartirán los archivos adjuntos del chat. Quien lo añada recibirá una copia en su propia carpeta.
×

📌 Mensajes guardados

Cargando...

×

Historial de Chat

programas-ejemplo · HISTORIAL DE CHAT

Cargando...

Preferencias de IA

×
  • 🟢 BásicoRespuestas rápidas y esenciales para estudiar
  • 🔵 MedioMayor calidad para estudio y programación
  • 🟣 AvanzadoRazonamiento complejo y análisis detallado
Explicar Pasos

¿Qué se necesita?

HTML: estructura básica con elementos <ul> y <li> para los pasos

CSS: uso de Flexbox para layout horizontal

CSS: pseudo-elementos ::before y ::after para círculos y líneas de conexión

CSS: clases .completed, .current y por defecto para gestionar estados de pasos

Configuración: variables CSS para colores y tamaños

Software: sin dependencias externas, solo CSS puro

Arduino: no aplicable en este contexto

Temas Similares

Colorear enlaces: estilo básico para elementos <a>
Ejemplo básico de CSS para colorear enlaces HTML con estilos para estado normal, hover y visitado mejorando la apariencia y usabilidad web.
Centrar un párrafo con text-align
Aprende a centrar un párrafo horizontalmente usando la propiedad CSS text-align center de forma simple y compatible con todos los navegadores modernos.
Crear un botón básico con background-color y padding
Ejemplo sencillo para crear un botón básico con CSS usando background-color y padding para un diseño limpio y legible en cualquier página web.
Agregar espacio entre párrafos con margin
Aprende a usar la propiedad CSS margin para agregar espacio entre párrafos con margin-bottom y mejorar la separación visual sin afectar el contenido interno.
Cambiar el color de los títulos h1 con una regla simple
Ejemplo básico para cambiar el color de los títulos h1 usando una regla CSS simple y directa, ideal para principiantes en hojas de estilo.
Cambiar la alineación de una imagen con propiedades CSS básicas
Ejemplo sencillo para cambiar la alineación horizontal de una imagen usando propiedades CSS básicas como text-align y margin en un contenedor div.
Establecer un tamaño fijo para las imágenes con width y height
Ejemplo sencillo para establecer un tamaño fijo en imágenes usando CSS width y height, garantizando un diseño uniforme y coherente en la página web.
Aplicar diferentes fondos a los párrafos con background-color
Ejemplo básico para aplicar diferentes colores de fondo a párrafos HTML usando la propiedad CSS background-color y selectores de clase.