Je développe une application Rails et je souhaite faire disparaître les messages flash, je l'ai donc implémentée en javascript, je vais donc l'écrire.
Ces gars ↓ ↓ (l'alerte Bootstrap est appliquée)

Fade this out
Ruby: 2.5.1 Rails: 5.2.4.2
En tant qu'image de mise en œuvre, augmentez progressivement la transparence et cachez-la enfin.
Attribut de style d'élément ① Diminuez la valeur de l'opacité ② Lorsque l'opacité devient 0, réglez l'affichage: aucun;
erb ressemble à ça
_flash_messages.html.erb
<% flash.each do |message_type, message| %>
  <div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>
flash_message.js
// turbolinks:Exécuter lors du chargement de la page avec chargement
document.addEventListener('turbolinks:load', () => {
  //obtenir un élément de message flash
  const flashMessage = document.querySelector('.alert');
  //Fondu (progressivement transparent,Définir une fonction (à masquer)
  const fadeOutFlashMessage = () => {
    //La variable de valeur de retour timer pour identifier setInterval_Stocker dans l'ID
    const timer_id = setInterval(() => {
      //Obtenez l'opacité de l'attribut de style du message flash
      const opacity = flashMessage.style.opacity;
      if (opacity > 0) {
      //0 si la valeur d'opacité est supérieure à 0.Diminuez la valeur de 02
        flashMessage.style.opacity = opacity - 0.02;
      } else {
        //Masquer lorsque la valeur d'opacité atteint 0
        flashMessage.style.display = 'none';
        //Arrêter setInterval
        clearInterval(timer_id);
      };
    }, 50); //Cette fois 0.Exécuter setInterval toutes les 05 secondes
  }
  //Exécuter uniquement s'il y a un message flash
  if (flashMessage !== null) {
    //Définir l'opacité des attributs de style
    flashMessage.style.opacity = 1;
    //Cette fois, exécutez la fonction qui disparaît comme défini plus de 3 secondes après l'affichage.
    setTimeout(fadeOutFlashMessage, 3000);
  };
});
J'ai fait référence à l'article suivant. Merci beaucoup.
・ Aide-mémoire Turbolinks ・ [JavaScript] Comment faire disparaître et effacer Rails flash
Merci pour la lecture. Je serais très heureux si vous pouviez signaler des erreurs ou des méthodes de description plus efficaces.
Recommended Posts