Tenho na minha página um botão que, quando clicado, exibe um div
(estilo pop-up) no meio da minha tela.
Estou usando o seguinte CSS para centralizar div
no meio da tela:
.PopupPanel
{
border: solid 1px black;
position: absolute;
left: 50%;
top: 50%;
background-color: white;
z-index: 100;
height: 400px;
margin-top: -200px;
width: 600px;
margin-left: -300px;
}
Esse CSS funciona bem desde que a página não seja rolada para baixo.
Mas, se eu colocar o botão na parte inferior da minha página, quando ele for clicado, ele div
será exibido na parte superior e o usuário precisará rolar para cima para visualizar o conteúdo da div
.
Gostaria de saber como exibir o div
meio da tela, mesmo quando a página foi rolada.
left: 50%; top: 50%
Move o canto superior esquerdo do.PopupPanel
para o centro da tela. Em seguida, movemos a metade da largura e altura de volta para o centro do centro. Consulte Centralização em css-tricks.comRespostas:
Mude o
position
atributo para emfixed
vez deabsolute
.fonte
Mude
position:absolute;
paraposition:fixed;
fonte
mudança
Para
Especificações do W3C para
position: absolute
e paraposition: fixed
.fonte
Acabei de encontrar um novo truque para centralizar uma caixa no meio da tela, mesmo que você não tenha dimensões fixas. Digamos que você queira uma caixa com 60% de largura / 60% de altura. A maneira de centralizá-lo é criando 2 caixas: uma caixa "contêiner" que fica à esquerda: 50% superior: 50%, e uma caixa "texto" dentro com a posição reversa à esquerda: -50%; topo: -50%;
Funciona e é compatível com vários navegadores.
Confira o código abaixo, você provavelmente terá uma explicação melhor:
fonte
O método correto é
fonte