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

Caixa de diálogo não se posiciona no centro independentemente da barra de rolagem

Por que a caixa de diálogo que crio não fica fixa no centro da tela? Segue o código html e css dela:

<div class="box">
        Caixa de Diálogo
</div>
.box {
    position: fixed;
    top: 50%;
    left: 50%;
    padding: 3% 10%;
    z-index: 9999;
    box-shadow: inset 0 0 5px black, 
                0px 0px 0px 9999px rgba(0, 0, 0, 0.75);
    background-color: #FFF;
    font-size: 2em;
    text-align: center;
    transform: translate(-50%, -50%);
}

Pensei que o position: fixed resolveria esse problema, mas não resolveu. Quando movimento a barra de rolagem, ela se movimenta também, chegando a sumir da tela se descer o suficiente.

5 respostas

Olá David!

No exemplo que fiz aqui com o seu código a caixa de diálogo ficou fixa no centro do navegador. A questão é que para visualizar esse comportamento tive que acrescentar uns parágrafos para poder perceber.

Segue abaixo o código que utilizei:

<html>
<head>
    <title>Exemplo</title>
    <style type="text/css">
    .box {
        position: fixed;
        top: 50%;
        left: 50%;
        padding: 3% 10%;
        z-index: 9999;
        box-shadow: inset 0 0 5px black, 
                    0px 0px 0px 9999px rgba(0, 0, 0, 0.75);
        background-color: #FFF;
        font-size: 2em;
        text-align: center;
        transform: translate(-50%, -50%);
    }
    p{
        line-height: 100px;
        margin-bottom: 150px;
    }
    </style>
</head>
<body>
    <div id="conteudo">
        <h3>Título</h3>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur varius, mi ut semper mattis, risus lectus faucibus leo, nec sodales lorem diam quis velit. Proin porttitor metus sit amet nisl lacinia interdum. Donec malesuada dui in tristique convallis. Ut nulla erat, feugiat at est sed, accumsan ultricies elit. Etiam ut pellentesque. Curabitur in tincidunt nibh. Ut adipiscing, neque ut accumsan ornare, eros tellus tincidunt erat.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur varius, mi ut semper mattis, risus lectus faucibus leo, nec sodales lorem diam quis velit. Proin porttitor metus sit amet nisl lacinia interdum. Donec malesuada dui in tristique convallis. Ut nulla erat, feugiat at est sed, accumsan ultricies elit. Etiam ut pellentesque. Curabitur in tincidunt nibh. Ut adipiscing, neque ut accumsan ornare, eros tellus tincidunt erat.</p>
    </div>

    <div class="box">
        Caixa de Diálogo
    </div>
</body>
</html>

Veja se funciona no seu computador e se esclarece a sua dúvida.

Espero ter ajudado.

Olá, Júnior!

O seu código funcionou perfeitamente. Mas o meu não tem o mesmo comportamento...

Segue os arquivos html e css que estou usando no link do google drive.

A classe box é definida no arquivo site.css, mas enviei os outros css para a página funcionar da forma que eu vejo aqui.

https://drive.google.com/open?id=1nMm81eqLA34VOIGEU6IOaSj8YmpkE3VV

solução!

Olá David! Acho que descobri o problema no seu código. No arquivo "index.css" há seguinte bloco de código:

body {
    -webkit-perspective: 6px;
            perspective: 6px;
    -webkit-perspective-origin: 50% 160px;
            perspective-origin: 50% 160px;
}

Este bloco está de alguma forma anulando a sua classe box. Fiz alguns teste aqui em casa e quando retirei este bloco a página funcionou da forma como você esperava.

Faça o teste e depois você me conta, ok? Abs,

Você tentou usar margin: 0 auto; ?

Realmente, se tirar a perspectiva da tag body, a caixa de diálogo funciona certinho.

Tentei também usar o margin: 0 auto; mas não deu certo.

A perspectiva é pra que as letras do cabeçalho tenham aquele efeito de sair da tela. Deve ter algum jeito de fazer a caixa de diálogo se comportar como o esperado considerando a perspectiva aplicada na página.

Muito obrigado pela ajuda de vocês.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software