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 autoen unposition: fixeddiv. ¿Leíste siquiera la pregunta?Respuestas:
Puede centrar un
fixedoabsoluteajuste de elemento posicionadorightyleftto0, y luegomargin-left&margin-righttoautocomo si estuviera centrando unstaticelemento 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
rightcomoleftde 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
transformpropiedad 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)