Respostas:
Seu problema pode ser resolvido se você der div
uma largura fixa, da seguinte forma:
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;
}
Sei que estou atrasado para a festa, mas achei melhor dar uma resposta aqui para pessoas que precisam posicionar horizontalmente um item absoluto, quando você não sabe sua largura exata.
Experimente isto:
// Horizontal example.
div#thing {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
A mesma técnica também pode ser aplicada, para quando você precisar de alinhamento vertical, simplesmente ajustando as propriedades como:
// Vertical example.
div#thing {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Se for necessário que você tenha uma largura relativa (em porcentagem), você pode envolver seu div em um posicionado absoluto:
div#wrapper {
position: absolute;
width: 100%;
text-align: center;
}
Lembre-se de que, para posicionar um elemento de forma absoluta, o elemento pai deve ser posicionado de forma relativa.
Eu estava tendo o mesmo problema e minha limitação era que não posso ter uma largura predefinida. Se o seu elemento não tiver uma largura fixa, tente este
div#thing
{
position: absolute;
top: 0px;
z-index: 2;
left:0;
right:0;
}
div#thing-body
{
text-align:center;
}
então modifique seu html para ficar assim
<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;
}
Sim:
div#thing { text-align:center; }