Tengo un div que tendrá este CSS:
#some_kind_of_popup
{
position: fixed;
top: 100px;
min-height: 300px;
width: 90%;
max-width: 900px;
}
Ahora, ¿cómo puedo hacer que este div esté centrado? Puedo usarlo, margin-left: -450px; left: 50%;
pero esto solo funcionará cuando la pantalla tenga> 900 píxeles. Después de eso (cuando la ventana tenga <900 píxeles), ya no estará centrada.
Por supuesto, puedo hacer esto con algún tipo de js, pero ¿hay una forma "más correcta" de hacer esto con CSS?
margin: 0 auto
en unposition: fixed
div. ¿Leíste siquiera la pregunta?Respuestas:
Puede centrar un
fixed
oabsolute
ajuste de elemento posicionadoright
yleft
to0
, y luegomargin-left
&margin-right
toauto
como si estuviera centrando unstatic
elemento posicionado.#example { position: fixed; /* center the element */ right: 0; left: 0; margin-right: auto; margin-left: auto; /* give it dimensions */ min-height: 10em; width: 90%; }
Vea este ejemplo trabajando en este violín .
fuente
right
comoleft
de al menos avalue >= witdth / 2
, como se ve en jsfiddle.net/PvfFy/168 , pero no es un enfoque elegante en mi humilde opinión. Lo probé en Chrome por diversión, no sé si funcionará en el restoAquí hay otro método si puede usar de forma segura la
transform
propiedad de CSS3 :.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%); }
... o si desea centrado tanto horizontal como 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%); }
fuente
<div id="container"> <div id="some_kind_of_popup"> center me </div> </div>
Necesitarías envolverlo en un recipiente. aquí está el 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; }
fuente
Esto funciona independientemente del tamaño de su contenido.
.centered { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); }
fuente: https://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/
fuente
transform: translate(-50%, -50%);
hace que el texto sea borroso (al menos en cromo)