2017-10-06 1 views
3

Wenn Sie eine CSS-Animation für das modale Öffnen festlegen, berücksichtigt das Modal diese Animation, aber wenn Sie das Modal schließen, verschwindet es, ohne die Animation zu berücksichtigen.Wie kann ich die Modal-Close-Animation in Bootstrap verlangsamen/steuern?

Ich bin verwirrt, weil die Bootstrap-Dokumente sagen "Dieses Ereignis wird ausgelöst, wenn das Modal vor dem Benutzer ausgeblendet wurde (wartet auf CSS-Übergänge abgeschlossen)." https://getbootstrap.com/docs/4.0/components/modal/

Hier ist ein Beispiel; https://jsfiddle.net/chaz7979/o04pxo88/3/

Beachten Sie, wie das Modal sehr langsam nach unten gleitet, aber sofort verschwindet. Ist das ein Fehler oder fehlt mir etwas CSS?

Fehler oder nicht, gibt es eine Möglichkeit, das Modal zu schließen/zu verlassen, wie es die Seite eingegeben hat?

HTML

<!-- Button trigger modal --> 
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong"> 
    Launch demo modal 
</button> 

<!-- Modal --> 
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
     </button> 
     </div> 
     <div class="modal-body"> 
     ... 
     </div> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> 
     <button type="button" class="btn btn-primary">Save changes</button> 
     </div> 
    </div> 
    </div> 
</div> 

CSS

.modal.fade .modal-dialog { 
     transition: 10s; 
    } 

Antwort

0

Wenn sie sagen, (wartet für Übergänge CSS abgeschlossen), was sie meinen, ist: es wurde hart codiert nach dem Standard auslösen fest codierte Dauer des Schließens des modalen, , die Sie mit nicht durcheinander bringen sollten.

Eines der Dinge, Bootstrap-modal tut beim Schließen .modal-backdrop nach 600ms ist die Entfernung, das ist, wie viel es braucht, um-up zu gleiten und Fade-out die .modal-dialog + verblassen die .modal selbst.

Das lässt nur eine Option übrig, aber Sie brauchen ein bisschen mehr als CSS. Sie aufgeben müssen, das modale Schließen mit es Standardmethode ist und tun es mit einer Funktion der eigenen, die im Prinzip sollte:

  • show Klasse entfernen .modal
  • entfernen show Klasse von .modal-backdrop
  • entfernen modal-open Klasse von <body>
  • belebten die modalen Elementen (.modal, .modal-dialog und .modal-backdrop) Ausfahrt Animation zu Inhalt Ihres Herzens
  • Ort style="display:none;" auf .modal
  • .modal-backdrop

Dieses löschen ist ziemlich viel, was Bootstrap tut, außer es tatsächlich ein bisschen mehr, für eine verbesserte Zugänglichkeit der Fall ist.

Verwandte Themen