Notificación Toast

Intermedio

Sistema moderno de notificaciones toast con múltiples tipos, animaciones y funcionalidad de auto-descarte para retroalimentación del usuario.

Vista Previa en Vivo

Implementación del Código

HTML
<div class="toast-container">
  <div class="toast-header">
    <h1 class="toast-title">Sistema de Notificaciones Toast</h1>
    <p class="toast-subtitle">Sistema de notificaciones interactivo con múltiples tipos y animaciones</p>
  </div>
  
  <div class="toast-demo">
    <div class="demo-controls">
      <h2>Prueba Diferentes Notificaciones</h2>
      <div class="control-buttons">
        <button class="demo-btn success" data-type="success">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/>
          </svg>
          Éxito
        </button>
        
        <button class="demo-btn error" data-type="error">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
          </svg>
          Error
        </button>
        
        <button class="demo-btn warning" data-type="warning">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/>
          </svg>
          Advertencia
        </button>
        
        <button class="demo-btn info" data-type="info">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
          </svg>
          Información
        </button>
        
        <button class="demo-btn loading" data-type="loading">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6z"/>
          </svg>
          Cargando
        </button>
      </div>
      
      <div class="demo-options">
        <div class="option-group">
          <label for="positionSelect">Posición:</label>
          <select id="positionSelect">
            <option value="top-right">Superior Derecha</option>
            <option value="top-left">Superior Izquierda</option>
            <option value="bottom-right">Inferior Derecha</option>
            <option value="bottom-left">Inferior Izquierda</option>
            <option value="top-center">Superior Centro</option>
            <option value="bottom-center">Inferior Centro</option>
          </select>
        </div>
        
        <div class="option-group">
          <label for="durationSelect">Duración:</label>
          <select id="durationSelect">
            <option value="3000">3 segundos</option>
            <option value="5000" selected>5 segundos</option>
            <option value="8000">8 segundos</option>
            <option value="0">Sin auto-descarte</option>
          </select>
        </div>
        
        <div class="option-group">
          <label>
            <input type="checkbox" id="soundEnabled" checked>
            Habilitar Sonido
          </label>
        </div>
        
        <div class="option-group">
          <label>
            <input type="checkbox" id="animationEnabled" checked>
            Habilitar Animación
          </label>
        </div>
      </div>
      
      <div class="bulk-actions">
        <button class="action-btn" id="showMultiple">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
          </svg>
          Mostrar Múltiples
        </button>
        
        <button class="action-btn" id="clearAll">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/>
          </svg>
          Limpiar Todo
        </button>
      </div>
    </div>
    
    <div class="demo-preview">
      <h3>Vista Previa en Vivo</h3>
      <p>Haz clic en los botones de arriba para ver las notificaciones en acción. Las notificaciones aparecerán en la posición seleccionada con la configuración establecida.</p>
      
      <div class="preview-stats">
        <div class="stat-item">
          <span class="stat-number" id="totalShown">0</span>
          <span class="stat-label">Total Mostradas</span>
        </div>
        <div class="stat-item">
          <span class="stat-number" id="currentActive">0</span>
          <span class="stat-label">Actualmente Activas</span>
        </div>
        <div class="stat-item">
          <span class="stat-number" id="autoDismissed">0</span>
          <span class="stat-label">Auto Descartadas</span>
        </div>
      </div>
    </div>
  </div>
  
  <!-- Toast Container Areas -->
  <div class="toast-area top-right" id="toast-top-right"></div>
  <div class="toast-area top-left" id="toast-top-left"></div>
  <div class="toast-area bottom-right" id="toast-bottom-right"></div>
  <div class="toast-area bottom-left" id="toast-bottom-left"></div>
  <div class="toast-area top-center" id="toast-top-center"></div>
  <div class="toast-area bottom-center" id="toast-bottom-center"></div>
</div>

Características del Fragmento

Diseño Responsivo: Sí
Soporte para Modo Oscuro: No
Categoría: widgets
Nivel de Dificultad: Intermedio

Compatibilidad del Navegador

🟢
chrome 60+
🟠
firefox 55+
🔵
safari 10+
🟦
edge 15+