Respuestas:
Su problema puede resolverse si le da div
un ancho fijo, de la siguiente manera:
div#thing {
position: absolute;
top: 0px;
z-index: 2;
width:400px;
margin-left:-200px;
left:50%;
}
div#thing
{
position: absolute;
width:400px;
right: 0;
left: 0;
margin: auto;
}
Sé que llego tarde a la fiesta, pero pensé en proporcionar una respuesta aquí para las personas que necesitan colocar horizontalmente un elemento absoluto, cuando no conocen su ancho exacto.
Prueba esto:
// Horizontal example.
div#thing {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
También se puede aplicar la misma técnica, para cuando necesite una alineación vertical, simplemente ajustando las propiedades de esta manera:
// Vertical example.
div#thing {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Si es necesario que tenga un ancho relativo (en porcentaje), puede envolver su div en uno posicionado absoluto:
div#wrapper {
position: absolute;
width: 100%;
text-align: center;
}
Recuerde que para posicionar un elemento de forma absoluta, el elemento padre debe posicionarse relativamente.
Tenía el mismo problema y mi limitación era que no puedo tener un ancho predefinido. Si su elemento no tiene un ancho fijo, intente esto
div#thing
{
position: absolute;
top: 0px;
z-index: 2;
left:0;
right:0;
}
div#thing-body
{
text-align:center;
}
luego modifique su html para que se vea así
<div id="thing">
<div id="thing-child">
<p>text text text with no fixed size, variable font</p>
</div>
</div>
.contentBlock {
width: {define width}
width: 400px;
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
}
Si:
div#thing { text-align:center; }