interactive
intermediate
counter
animacion
estadisticas
numeros
scroll
Categoría · Interactivo Nivel de Dificultad · Intermedio Publicado el · 22 de enero de 2024

Contador Animado

Componente de contador animado suave con easing personalizable, múltiples formatos de números y intersection observer para rendimiento. Perfecto para secciones de estadísticas y logros.

#counter #animacion #estadisticas #numeros #scroll

Diseño Responsivo

Soporte para Modo Oscuro

líneas

523

Compatibilidad del Navegador

No

Vista Previa en Vivo

Interactúa con el componente sin salir de la página.

400px

Contador Animado

Un componente de contador animado sofisticado con animaciones de easing suaves, múltiples formatos de números y intersection observer para optimización de rendimiento. Perfecto para mostrar estadísticas, logros y métricas clave con impacto visual.

Características

  • Animaciones Suaves: Easing cúbico con duración personalizable
  • Múltiples Formatos: Números regulares, moneda, porcentajes y notación compacta
  • Auto-activación: Intersection Observer para animación basada en scroll
  • Animación Escalonada: Animaciones secuenciales de contadores para atractivo visual
  • Optimizado para Rendimiento: RequestAnimationFrame para animaciones a 60fps
  • Diseño Responsivo: Layout de grid adaptativo para todos los tamaños de pantalla
  • Accesibilidad: Amigable con lectores de pantalla con etiquetas ARIA apropiadas
  • Personalizable: Fácil de configurar objetivos, duraciones y formatos

Formatos de Números

  • Regular: Formateo estándar de números con soporte de localización
  • Moneda: Sufijos automáticos K/M para cantidades grandes
  • Compacto: Notación abreviada (1.5K, 2.3M)
  • Porcentaje: Control de precisión decimal
  • Prefijos/Sufijos Personalizados: Signos de dólar, símbolos de más, etc.

Características de Animación

  • Funciones de Easing: Transiciones cubic-bezier suaves
  • Retroalimentación Visual: Efectos de brillo durante la animación
  • Estados de Finalización: Animación de pulso cuando se alcanza el objetivo
  • Indicadores de Progreso: Anillos de carga opcionales
  • Control de Escalonamiento: Retraso personalizable entre contadores

Optimizaciones de Rendimiento

  • Intersection Observer para detección de viewport
  • RequestAnimationFrame para animaciones suaves
  • Manipulación eficiente del DOM
  • Prevención de memory leaks con métodos de limpieza
  • Eventos de scroll throttled

Opciones de Personalización


const config = {
  target: 1500,
  duration: 3000,
  decimals: 1,
  format: 'compact',
  icon: '🎯',
  label: 'Objetivos Alcanzados',
  suffix: '+'
};

const grid = document.querySelector('.counter-grid');
const counter = createCounter(grid, config);

Personalización CSS

.counter-card {
  background: rgba(tu-color, 0.1);
  border-color: rgba(tu-color, 0.2);
}.counter-number {
  transition: all 0.5s ease;
}.counter-card:hover {
  transform: translateY(-15px) scale(1.02);
}

Métodos de API

const counter = new AnimatedCounter();

counter.startAllCounters();     // Iniciar todas las animaciones
counter.resetAllCounters();     // Reiniciar todos los contadores
counter.startCounter(0);        // Iniciar contador específico
counter.resetCounter(0);        // Reiniciar contador específico

counter.addCounter(element, 1000, 2000, {
  decimals: 2,
  format: 'currency'
});

const metrics = counter.getPerformanceMetrics();

counter.destroy();

Soporte de Navegadores

  • Chrome 51+ (soporte completo)
  • Firefox 55+ (soporte completo)
  • Safari 12.1+ (soporte completo)
  • Edge 15+ (soporte completo)
  • iOS Safari 12.2+ (soporte completo)

Características de Accesibilidad

  • Estructura HTML semántica
  • Etiquetas ARIA para lectores de pantalla
  • Soporte de navegación por teclado
  • Compatibilidad con modo de alto contraste
  • Soporte para movimiento reducido

Casos de Uso

  • Secciones de Estadísticas: Logros y métricas de la empresa
  • Widgets de Dashboard: Visualización de datos en tiempo real
  • Páginas de Aterrizaje: Indicadores clave de rendimiento
  • Sitios de Portafolio: Conteos de proyectos y tasas de éxito
  • E-commerce: Cifras de ventas y conteos de clientes
  • Analytics: Métricas de engagement de usuarios

Ejemplos de Integración


<div class="counter-number" data-target="1000" data-duration="2000">0</div>


<div class="counter-number" 
     data-target="2500000" 
     data-duration="3000" 
     data-format="currency">0</div>


<div class="counter-number" 
     data-target="98.5" 
     data-duration="2500" 
     data-decimals="1">0</div>

HTML

58

líneas

CSS

236

líneas

JavaScript

229

líneas


                <div class="counter-container">
  <div class="counter-grid">
    
    <div class="counter-card">
      <div class="counter-icon">👥</div>
      <div class="counter-number" data-target="1250" data-duration="2000">0</div>
      <div class="counter-label">Clientes Satisfechos</div>
      <div class="counter-suffix">+</div>
    </div>
    
    
    <div class="counter-card">
      <div class="counter-icon">📈</div>
      <div class="counter-number" data-target="98.5" data-duration="2500" data-decimals="1">0</div>
      <div class="counter-label">Tasa de Éxito</div>
      <div class="counter-suffix">%</div>
    </div>
    
    
    <div class="counter-card">
      <div class="counter-icon">💼</div>
      <div class="counter-number" data-target="15000" data-duration="3000" data-format="compact">0</div>
      <div class="counter-label">Proyectos Completados</div>
      <div class="counter-suffix"></div>
    </div>
    
    
    <div class="counter-card">
      <div class="counter-icon">🏆</div>
      <div class="counter-number" data-target="12" data-duration="1500">0</div>
      <div class="counter-label">Años de Experiencia</div>
      <div class="counter-suffix"></div>
    </div>
    
    
    <div class="counter-card">
      <div class="counter-icon">💰</div>
      <div class="counter-prefix">\$</div>
      <div class="counter-number" data-target="2500000" data-duration="3500" data-format="currency">0</div>
      <div class="counter-label">Ingresos Generados</div>
      <div class="counter-suffix"></div>
    </div>
    
    
    <div class="counter-card">
      <div class="counter-icon">⬇️</div>
      <div class="counter-number" data-target="500000" data-duration="2800" data-format="compact">0</div>
      <div class="counter-label">Descargas Totales</div>
      <div class="counter-suffix">+</div>
    </div>
  </div>
  
  
  <div class="counter-controls">
    <button class="control-btn" id="startBtn">Iniciar Animación</button>
    <button class="control-btn" id="resetBtn">Reiniciar Contadores</button>
  </div>
</div>

              
58líneas
2047caracteres
HTMLIdioma

Fragmentos de Código Relacionados

Explora packs de plantillas

¿Necesitas bloques más grandes? Descubre landings y colecciones de componentes.

Abrir la biblioteca de plantillas ->