#menu {
position: fixed;
width: 800px;
background: rgb(255, 255, 255); /* The Fallback */
background: rgba(255, 255, 255, 0.8);
margin-top: 30px;
}
Sé que esta pregunta está ahí un millón de veces, sin embargo, no puedo encontrar una solución para mi caso. Tengo un div, que debe corregirse en la pantalla, incluso si la página se desplaza, ¡siempre debe permanecer CENTRADA en el centro de la pantalla!
El div debe tener 500px
ancho, debe estar 30px
alejado de la parte superior (margen superior), debe estar centrado horizontalmente en el medio de la página para todos los tamaños de navegador y no debe moverse al desplazarse por el resto de la página.
¿Es eso posible?
Respuestas:
fuente
-400
se debe al ancho del div configurado en800
.Las respuestas aquí están desactualizadas. Ahora puede usar fácilmente una transformación CSS3 sin codificar un margen . Esto funciona en todos los elementos, incluidos los elementos sin ancho o ancho dinámico.
Centro horizontal:
Centro vertical:
Tanto horizontal como vertical:
La compatibilidad no es un problema: http://caniuse.com/#feat=transforms2d
fuente
Si usar bloques en línea es una opción, recomendaría este enfoque:
Escribí una breve publicación sobre esto aquí: http://salomvary.github.com/position-fixed-horizontally-centered.html
fuente
width
o algo así, a diferencia de la respuesta de @QuentinsEditar septiembre de 2016: aunque es bueno obtener un voto positivo ocasional por esto, porque el mundo ha avanzado, ahora iría con la respuesta que usa transform (y que tiene un montón de votos a favor). Ya no lo haría así.
Otra forma de no tener que calcular un margen o necesitar un subcontenedor:
fuente
bottom:0
aseguraría que el menú esté siempre centrado verticalmente, pero ahora veo que eso no es lo que solicitó el OP. :)Es posible centrar horizontalmente el div de esta manera:
html:
css:
De esta manera, siempre tendrá su bloque interno centrado, además, puede convertirse fácilmente en una verdadera respuesta (en el ejemplo, solo será fluido en pantallas más pequeñas), por lo tanto, no hay limitación en el ejemplo de la pregunta y en la respuesta elegida .
fuente
... o puedes envolver tu menú div en otro:
fuente
Aquí hay otra solución de dos div. Intenté mantenerlo conciso y no codificado. Primero, el html esperado:
El principio detrás del siguiente css es posicionar algún lado de "externo", luego usar el hecho de que asume el tamaño de "interno" para cambiar relativamente el último.
Este enfoque es similar al de Quentin, pero el interior puede ser de tamaño variable.
fuente
Aquí hay una solución de flexbox cuando se usa un contenedor de pantalla completa div. justify-content centra su div hijo horizontalmente y align-items lo centra verticalmente.
fuente