Risposte:
Il tuo problema potrebbe essere risolto se dai divuna larghezza fissa, come segue:
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;
}
So di essere in ritardo alla festa, ma ho pensato di fornire una risposta qui per le persone che hanno bisogno di posizionare orizzontalmente un oggetto assoluto, quando non si conosce la sua larghezza esatta.
Prova questo:
// Horizontal example.
div#thing {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
La stessa tecnica può anche essere applicata, per quando potrebbe essere necessario l'allineamento verticale, semplicemente regolando le proprietà in questo modo:
// Vertical example.
div#thing {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Se è necessario che tu abbia una larghezza relativa (in percentuale), puoi racchiudere il tuo div in uno con posizione assoluta:
div#wrapper {
position: absolute;
width: 100%;
text-align: center;
}
Ricorda che per posizionare un elemento in modo assoluto, l'elemento genitore deve essere posizionato relativamente.
Stavo avendo lo stesso problema e il mio limite era che non posso avere una larghezza predefinita. Se il tuo elemento non ha una larghezza fissa, prova questo
div#thing
{
position: absolute;
top: 0px;
z-index: 2;
left:0;
right:0;
}
div#thing-body
{
text-align:center;
}
quindi modifica il tuo html in questo modo
<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;
}
Sì:
div#thing { text-align:center; }