Estoy tratando de obtener un div que tenga el position:fixed
centro alineado en mi página.
Siempre he podido hacerlo con divs posicionados absolutamente usando este "hack"
left: 50%; width: 400px; margin-left:-200px
... donde el valor para margen izquierdo es la mitad del ancho del div.
Esto no parece funcionar para divisiones de posición fija, sino que las coloca con su esquina más a la izquierda al 50% e ignora la declaración de margen izquierda.
¿Alguna idea de cómo solucionar esto para poder alinear los elementos posicionados fijos?
Y agregaré un M&M adicional si me puede decir una mejor manera de centrar elementos alineados absolutamente en posición que la que he descrito anteriormente.
Respuestas:
La respuesta de Koen no centra exactamente el elemento.
La forma correcta es usar la
CCS3 transform
propiedad. Aunque no es compatible con algunos navegadores antiguos . Y ni siquiera necesitamos establecer un valor fijo o relativowidth
.Trabajando jsfiddle comparación aquí .
fuente
left: 50%
mueve el div al 50% de la página. Pero debes tener en cuenta que lo mueve comenzando desde el lado izquierdo del div, por lo tanto, el div aún no está centrado.translate(-50%, 0)
que básicamentetranslateX(-50%)
considera el ancho actual del div y lo mueve un 50% de su ancho al lado izquierdo desde el lugar real.Para los que tienen este mismo problema, pero con un diseño receptivo, también pueden usar:
Hacer esto siempre mantendrá su fijo
div
centrado en la pantalla, incluso con un diseño receptivo.fuente
-(75/2)
en este caso)También puedes usar flexbox para esto.
fuente
<center>
que estaba en desuso y utilizando una técnica moderna como ladisplay: flex
y algunas propiedades asociadas.De la publicación anterior, creo que la mejor manera es
width: 100%
margin-left: auto
ymargin-right: auto
, o para table, hazloalign="center"
.Espero que esto ayude.
fuente
max-width
s para elementos de posición fija. ¿Desea una barra lateral fija que responda de manera receptiva al 30% de sumax-width: 1200px
página web? Esto te llevará allí.Los div normales deberían usar
margin-left: auto
ymargin-right: auto
, pero eso no funciona para divs fijos. La forma de evitar esto es similar a la respuesta de Andrew , pero no usa lo obsoleto<center>
. Básicamente, solo dale al div fijo un contenedor.Esto centrará un div fijo dentro de un div mientras permite que el div reaccione con el navegador. es decir, el div estará centrado si hay suficiente espacio, pero colisionará con el borde del navegador si no lo hay; similar a cómo reacciona un div centrado regular.
fuente
Si desea centrar la alineación de una posición fija div, tanto vertical como horizontalmente, use esto
fuente
Esto debería hacer lo mismo.
fuente
Si sabes que el ancho es de 400 px, esta sería la forma más fácil de hacerlo, supongo.
fuente
Esto funciona si desea que el elemento se extienda por la página como otra barra de navegación.
ancho: calc (ancho: 100% - ancho todo lo demás está centrado)
Por ejemplo, si su barra de navegación lateral es 200px:
ancho: calc (100% - 200px);
fuente
Es bastante fácil usar ancho: 70%; izquierda: 15%;
Establece el ancho del elemento en el 70% de la ventana y deja el 15% en ambos lados
fuente
Usé lo siguiente con Twitter Bootstrap (v3)
Es decir, hacer un elemento de ancho completo que sea de posición fija, y simplemente empujar un contenedor en él, el contenedor está centrado en relación con el ancho completo. Debería comportarse bien de manera receptiva también.
fuente
Una solución usando flex box; totalmente receptivo:
fuente
si no quieres usar el método wrapper. entonces puedes hacer esto:
fuente