Eu tenho um div que terá este CSS:
#some_kind_of_popup
{
position: fixed;
top: 100px;
min-height: 300px;
width: 90%;
max-width: 900px;
}
Agora, como posso tornar este div centralizado? Posso usar, margin-left: -450px; left: 50%;
mas isso só funcionará quando a tela for> 900 pixels. Depois disso (quando a janela tiver <900 pixels), ela não estará mais centralizada.
Claro que posso fazer isso com algum tipo de js, mas existe um modo "mais correto" de fazer isso com CSS?
margin: 0 auto
em umposition: fixed
div. Você ao menos leu a pergunta?Respostas:
Você pode centralizar uma configuração de elemento posicionado
fixed
ou e para , e então & para como se estivesse centralizando um elemento posicionado.absolute
right
left
0
margin-left
margin-right
auto
static
#example { position: fixed; /* center the element */ right: 0; left: 0; margin-right: auto; margin-left: auto; /* give it dimensions */ min-height: 10em; width: 90%; }
Veja este exemplo trabalhando neste violino .
fonte
right
eleft
de pelo menos avalue >= witdth / 2
, como visto em jsfiddle.net/PvfFy/168 , mas não é uma abordagem elegante IMHO. Eu testei no Chrome para me divertir, não sei se vai funcionar no restoEste é outro método se você puder usar a
transform
propriedade CSS3 com segurança :.fixed-horizontal-center { position: fixed; top: 100px; /* or whatever top you need */ left: 50%; width: auto; -webkit-transform: translateX(-50%); -moz-transform: translateX(-50%); -ms-transform: translateX(-50%); -o-transform: translateX(-50%); transform: translateX(-50%); }
... ou se você quiser centralização horizontal E vertical:
.fixed-center { position: fixed; top: 50%; left: 50%; width: auto; height: auto; -webkit-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%); transform: translate(-50%,-50%); }
fonte
<div id="container"> <div id="some_kind_of_popup"> center me </div> </div>
Você precisa embrulhar em um recipiente. aqui está o css
#container{ position: fixed; top: 100px; width: 100%; text-align: center; } #some_kind_of_popup{ display:inline-block; width: 90%; max-width: 900px; min-height: 300px; }
fonte
Isso funciona independentemente do tamanho do seu conteúdo
.centered { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); }
fonte: https://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/
fonte
transform: translate(-50%, -50%);
faz com que o texto fique desfocado (pelo menos no cromo)