Reaktive modale Gleitanimation
<p>Ich habe ein Modal in React und CSS implementiert und derzeit, wenn ich es öffne, habe ich eine Slide-Up-Animation implementiert, bei der das Modal von unten nach oben gleitet, aber wenn ich es schließe, möchte ich, dass es nach unten gleitet, das geht nicht Finden Sie heraus, wie Sie die Slide-Down-Animation genau erstellen. Kann mir jemand helfen?
Code=></p>
<pre class="brush:php;toolbar:false;">import "./styles.css";
import react, { useState } from "react";
Standardfunktion App() exportieren {
const [isModalOpen, setIsModalOpen] = useState(false);
zurückkehren (
<div>
<button onClick={() => setIsModalOpen(true)}>open </button>
{isModalOpen && (
<div className={`modal-overlay`}>
<div className={`modal-content`}>
<div className="feedbackModalHeader">
<img
src="/assets/dislike_modal.svg"
alt=""
className="dislikeBtnNonFilled"
/>
<p className="provideFeedback">Zusätzliches Feedback geben</p>
</div>
<button onClick={() => setIsModalOpen(false)}>
</div>
</div>
)}
</div>
);
}</pre>
<p>css code=></p>
<pre class="brush:php;toolbar:false;">.modal-overlay {
Position: fest;
oben: 0;
links: 0;
rechts: 0;
unten: 0;
Hintergrundfarbe: rgba(0, 0, 0, 0,5);
Anzeige: Flex;
align-items: center;
rechtfertigen-Inhalt: Mitte;
Z-Index: 9999;
Übergang: Deckkraft 0,3 Sekunden;
}
* {
maximale Breite: 100 %;
}
.modal-content {
Hintergrund: #f5f0f0;
Polsterung: 20px;
Randradius: 4px;
Box-Shadow: 0 2px 10px rgba(0, 0, 0, 0,15);
Z-Index: 999;
transform: TranslateY(100%);
Animation: Slide-Up 0,3 Sek. Easy-Out nach vorne;
Breite: 59rem;
Randradius: 8px;
Rand links: auto;
Rand rechts: auto;
Box-Shadow: 0 4px 20px 0 rgb(0 0 0 / 10 %), 0 1px 2px 0 rgb(0 0 0 / 6 %);
Höhe: 21rem;
Position: relativ;
links: 2rem;
}
@keyframes slide-up {
aus {
transform: TranslateY(100%);
}
Zu {
transform: TranslateY(0);
}
}
.close-button {
Position: absolut;
oben: 10px;
rechts: 10px;
Grenze: keine;
Hintergrund: transparent;
Schriftgröße: 24px;
Cursor: Zeiger;
}
.Rückmeldung geben {
Schriftgröße: 20px;
}
.feedbackModalHeader {
Anzeige: Flex;
align-items: center;
Lücke: 1,2rem;
Rand oben: 0,8rem;
}</pre>
<p>Code-Sandbox-Link =>
https://codesandbox.io/s/dark-river-6ckllv?file=/src/styles.css</p>