Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Teria como animar a entrada do modal?

Sei que talvez eu esteja indo além do escopo do curso, mas como eu poderia criar uma animação css na abertura do modal?

2 respostas
solução!

Opa, e aí? Beleza?

Adicionar uma animação é uma excelente ideia :)

Por exemplo, podemos criar um efeito "fade in", assim:

import { styled } from "styled-components"
import Imagem from "../Galeria/Imagem"
import BotaoIcone from "../BotaoIcone"

const Overlay = styled.div`
    background-color: rgba(0, 0, 0, 0.7);
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    opacity: 0;
    animation: fadeIn 0.5s forwards;
    @keyframes fadeIn {
        to {
            opacity: 1;
        }
    }
`



const DialogEstilizado = styled.dialog`
    position: absolute;
    top: 294px;
    background: transparent;
    padding: 0;
    border: 0;
    width: 1156px;
    display: flex;
    justify-content: center;
    opacity: 0;
    transform: scale(0.9);
    animation: fadeInScale 0.5s forwards;
    form {
        button {
            position: relative;
            top: 20px;
            right: 60px;
        }
    }
    @keyframes fadeInScale {
        to {
            opacity: 1;
            transform: scale(1);
        }
    }
`

const ModalZoom = ({ foto, aoFechar }) => {
    return (
        <>
            {foto && <>
                <Overlay />
                <DialogEstilizado open={!!foto} onClose={aoFechar}>
                    <Imagem foto={foto} expandida={true} />
                    <form method="dialog">
                        <BotaoIcone formMethod="dialog">
                            <img src="/icones/fechar.png" alt="Icone de fechar" />
                        </BotaoIcone>
                    </form>
                </DialogEstilizado>
            </>}
        </>
    )
}

export default ModalZoom

A gente consegue fazer isso com CSS nativo e o styled components cuida disso pra gente. Se quiser saber um pouco mais sobre o assunto, pode dar uma espiadinha nesse artigo que aborda o assunto!

Bons estudo ;)

Ficou perfeito!