Yo te dejaré ver el código primero y luego le dice cuál es mi problema:No debería "text-align: center;" aplicado a un elemento absolutamente posicionado, ¿no hacer nada con sus elementos secundarios?
Tinkerbin: http://tinkerbin.com/x8iGCFsZ
<style>
div.container{
height: 200px;
width: 200px;
background-color:red;
margin-top: 10px;
}
div.subContainer{
position: relative;
text-align: center;
}
div.inner{
position: absolute;
background-color:yellow;
width: 150px;
}
</style>
<div class="container">
<div class="subContainer">
<div class="inner">bananas for breakfast</div>
</div>
</div>
Así, de acuerdo con el libro de texto, text-align: center;
, cuando se aplica a un elemento padre , solo centra sus elementos secundarios si tienen display: inline;
.
Por lo tanto, y como era de esperar, ya que un <div>
tiene por el conjunto de visualización por defecto para bloquear (display:block;
) la text-align: center;
aplica al padre div.subContainer
no hacer nada a su hijo div.inner
.
Todo bien hasta ahora. Nada raro
Mi problema despierta cuando intento usar <span>
, en lugar de <div>
en el elemento .inner
, y la posición absolutamente (position: absolute;
) — que, como usted sabe la fuerza cambia la pantalla, desde su línea por omisión, para bloquear.
Echale un vistazo:
<style>
div.container{
height: 200px;
width: 200px;
background-color:red;
margin-top: 10px;
}
div.subContainer{
position: relative;
text-align: center;
}
span.inner{
position: absolute;
background-color:yellow;
width: 150px;
}
</style>
<div class="container">
<div class="subContainer">
<span class="inner">bananas for breakfast</span>
</div>
</div>
Lo que pasa es raro. A pesar de tener el valor de visualización forzado del bloque (gracias al position: absolute;
) el tramo sigue centrado. Y aún más, el centrado es realmente extraño. Toma el lado izquierdo del bloque y lo alinea con el centro del elemento contenedor, en lugar de, como de costumbre, alineando ambos centros.
El comportamiento es — fijo comienza a actuar como un bloque — cuando configuro manualmente la pantalla en el span.inner
para bloquear.
span.inner{
position: absolute;
display: block;
background-color:yellow;
width: 150px;
}
Entonces, ¿qué está pasando aquí? ¿El posicionamiento absoluto no obliga a cambiar la pantalla para bloquear? ¿Por qué el centrado es raro?
En serio, esa es una respuesta fantástica: ** + 1 ** –
Sí, excelente respuesta. – ScottS
Hola. Gracias por la respuesta. Creo que lo tengo. ¿Dónde puedo leer más sobre esto? Todavía no he leído la Guía definitiva de CSS de Eric Meyer. ¿Cubre estos detalles? – banzomaikaka