Réponses:
Votre problème peut être résolu si vous donnez à votre div
une largeur fixe, comme suit:
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;
}
Je sais que je suis en retard à la fête, mais j'ai pensé que je fournirais une réponse ici pour les personnes qui ont besoin de positionner horizontalement un élément absolu, lorsque vous ne connaissez pas sa largeur exacte.
Essaye ça:
// Horizontal example.
div#thing {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
La même technique peut également être appliquée, lorsque vous pourriez avoir besoin d'un alignement vertical, simplement en ajustant les propriétés comme suit:
// Vertical example.
div#thing {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
S'il est nécessaire que vous ayez une largeur relative (en pourcentage), vous pouvez envelopper votre div dans une position absolue:
div#wrapper {
position: absolute;
width: 100%;
text-align: center;
}
N'oubliez pas que pour positionner un élément de manière absolue, l'élément parent doit être positionné de manière relative.
J'avais le même problème et ma limitation était que je ne peux pas avoir une largeur prédéfinie. Si votre élément n'a pas de largeur fixe, essayez ceci
div#thing
{
position: absolute;
top: 0px;
z-index: 2;
left:0;
right:0;
}
div#thing-body
{
text-align:center;
}
puis modifiez votre html pour qu'il ressemble à ceci
<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;
}
Oui:
div#thing { text-align:center; }