Necesito colocar un elemento div
(con position:absolute;
) en el centro de mi ventana. Pero tengo problemas para hacerlo, porque el ancho es desconocido .
Intenté esto Pero debe ajustarse ya que el ancho responde.
.center {
left: 50%;
bottom:5px;
}
¿Algunas ideas?
Respuestas:
fuente
position: fixed
, pero lo que si la altura es desconocida de superposición, las barras de desplazamiento de superposición tendrá que ser implementada<html>
. Pero el<html>
elemento no tiene unheight
especificado, por lo que toma la altura de todo el contenido del documento, lo que no es nada porque el único contenido está en una posición absoluta (sacado del flujo de contenido). Agregarheight: 100%
al<html>
elemento hace una diferencia en esto.Esto funciona para mi:
fuente
width
debe establecerse en un valor específico para que esto funcione.auto
y100%
no centrará el elemento.display: block;
es un deber.position: absolute;
NO es un deber. Todos los valores funcionarán. El elemento padreposition
debe establecerse en algo diferente astatic
. Configuraciónleft
yright
para0
es innecesario.margin-left: auto; margin-right: auto;
Hará el trabajo.Solución receptiva
Aquí hay una buena solución para un diseño receptivo o dimensiones desconocidas en general si no necesita admitir IE8 y versiones inferiores.
Mostrar fragmento de código
Aquí hay un violín JS
La pista es que
left: 50%
es relativa al padre mientras que eltranslate
transformación es relativa al ancho / alto de los elementos.De esta manera, tiene un elemento perfectamente centrado, con un ancho flexible tanto en el elemento secundario como en el principal. Bonificación: esto funciona incluso si el niño es más grande que el padre.
También puede centrarlo verticalmente con esto (y nuevamente, el ancho y la altura del padre y el niño pueden ser totalmente flexibles (y / o desconocidos)):
Tenga en cuenta que es posible que también necesite un
transform
prefijo de proveedor. Por ejemplo-webkit-transform: translate(-50%,-50%);
fuente
webkit-
prefijo que le sugerí.transform: translate
parece hacerposition: fixed
inutilizable en niños. La respuesta aceptada funciona mejor en este caso.Muy buena publicación ... Solo quería agregar si alguien quiere hacerlo con una sola etiqueta div, aquí está la salida:
Tomando
width
como900px
.En este caso, uno debe saber de
width
antemano.fuente
"because the width is unknown"
... esto no responde la preguntaCentro absoluto
HTML:
CSS:
Demostración: http://jsbin.com/rexuk/2/
Probado en Google Chrome, Firefox e IE8
Espero que esto ayude :)
fuente
este trabajo para vertical y horizontal
y si desea que el elemento sea el centro del elemento primario, establezca la posición del elemento relativo relativo
editar:
para el centro vertical, alinee la altura establecida con su elemento. gracias a @Raul
si desea que el elemento sea el centro del elemento primario, configure la posición del elemento primario como relativa
fuente
Buscando una solución, obtuve las respuestas anteriores y pude hacer que el contenido se centre con la respuesta de Matthias Weiler pero usando la alineación de texto.
Trabajó con Chrome y Firefox.
fuente
Si necesita centrarse horizontal y verticalmente también:
fuente
** SOLUCIÓN RESPONSABLE **
Asumiendo el elemento en el div, es otro div ...
esta solución funciona bien
el contenedor puede ser de cualquier tamaño (debe ser relativo a la posición)
El elemento ( div ) también puede ser de cualquier tamaño (debe ser más pequeño que el contenedor )
El resultado se verá así. Ejecute el fragmento de código
Lo encontré muy útil
fuente
Esta es una mezcla de otras respuestas, que funcionó para nosotros:
fuente
Entiendo que esta pregunta ya tiene algunas respuestas, pero nunca he encontrado una solución que funcione en casi todas las clases que también tenga sentido y sea elegante, así que aquí está mi opinión después de ajustar un montón:
Lo que esto hace es decir darme a
top: 50%
y aleft: 50%
, luego transformar (crear espacio) tanto en el eje X / Y como en el-50%
valor, en un sentido "crear un espacio espejo".Como tal, esto crea un espacio igual en los 4 puntos de un div, que siempre es una caja (tiene 4 lados).
Esta voluntad:
fuente
translate(-50%,-50%);
?Funciona en cualquier ancho desconocido aleatorio del elemento de posición absoluta que desea tener en el centro de su elemento contenedor.
Manifestación
fuente
Flex se puede usar para centrar la posición absoluta div.
Mostrar fragmento de código
fuente
display: -webkit-flex;
?Hasta donde yo sé, esto es imposible de lograr para un ancho desconocido.
Podría, si eso funciona en su escenario, colocar absolutamente un elemento invisible con un 100% de ancho y alto, y tener el elemento centrado allí usando el margen: automático y posiblemente verticalmente alineado. De lo contrario, necesitará Javascript para hacerlo.
fuente
Me gustaría agregar a la respuesta de @ bobince:
Mejorado: /// esto hace que la barra de desplazamiento horizontal no aparezca con elementos grandes en el div centrado.
fuente
Aquí hay un complemento útil de jQuery para hacer esto. Encontrado aquí . No creo que sea posible solo con CSS
fuente
versión sass / compass de la Solución de respuesta anterior:
fuente
transform: translate(-50%, -50%)
hace que el texto y el resto del contenido se vean borrosos en OS X usando los navegadores webkit keithclark.co.uk/articles/gpu-text-rendering-in-webkit-webkit-font-smoothing: antialiased;
lo he obtenido del artículo que publicó por cierto!Mi método de centrado preferido:
JS Violín aquí
fuente
Esto funcionó para mí:
fuente
Sé que ya proporcioné una respuesta, y mi respuesta anterior, junto con otras respuestas, funciona bien. Pero he usado esto en el pasado y funciona mejor en ciertos navegadores y en ciertas situaciones. Así que pensé que también daría esta respuesta. No "edité" mi respuesta anterior y la agregué porque siento que esta es una respuesta completamente separada y las dos que he proporcionado no están relacionadas.
HTML:
CSS:
fuente
fuente
HTML
CSS
http://jsfiddle.net/f51rptfy/
fuente
Esta solución funciona si el elemento tiene
width
yheight
fuente
la solución de esta pregunta no funcionó para mi caso. Estoy haciendo un subtítulo para algunas imágenes y resolví usar esto
fuente
HTML:
CSS:
Esto y más ejemplos aquí
fuente
Este es un truco que descubrí para hacer que un DIV flote exactamente en el centro de una página. Muy feo, por supuesto, pero funciona en todos
Puntos y rayas
Limpiador
Wow, esos cinco años pasaron volando, ¿no?
fuente
fuente
Puede colocar la imagen en un div y agregar un id de div y hacer que el CSS para ese div tenga un
text-align:center
HTML:
CSS:
fuente
fuente
Un enfoque simple que me funcionó para centrar horizontalmente un bloque de ancho desconocido:
Se puede agregar una propiedad de alineación de texto al conjunto de reglas #block para alinear su contenido independientemente de la alineación del bloque.
Esto funcionó en versiones recientes de Firefox, Chrome, IE, Edge y Safari.
fuente