2013-08-14 16 views
28

Próbuję wyśrodkować wiersz div w jego obiekcie nadrzędnym. Element macierzysty ma także dziecko div, które unosi się w prawo. Z powodu wyrównania w prawo div, moje wyśrodkowane div jest przesunięte w lewo. Chcę wycentrować środkowy element div, niezależnie od pozycji/rozmiaru pływającego, takiego jak obraz poniżej.Wyśrodkowywanie div w wierszu wbudowanym w element nadrzędny podczas ignorowania elementów pływających

enter image description here

Obecna konfiguracja ma zarówno wewnętrzne div wewnątrz rodzica, ale jestem przy założeniu, że właściwym sposobem jest, aby mieć prawo wyrównany div być poza bezwzględną pozycję?

Mam również wiele instancji elementu nadrzędnego div na tej samej stronie.

Jaki jest najlepszy sposób na osiągnięcie tego wyniku?

aktualny kod

<div id="parent" style="text-align:center"> 
    <div style="display:inline-block;"> ... </div> 
    <div style="display:inline-block;float:right"> ... </div> 
</div> 
+0

Spróbuj: http://stackoverflow.com/questions/13548358/how-does-one-have-centered-text-and-right-floating-text-on-the-same-line-when-e –

+0

Czy twój prawy div ma znaną/stałą szerokość? To samo dla C i rodzica – FelipeAls

Odpowiedz

21

ustawić prawy div css

position:absolute; 
right:0; 

względem div

#parent { 
position:relative; 
} 
+0

wymaga to również ustawienia pozycji rodzica do absolutnej – Bobo

+0

Jeśli prawy div nie ma maksymalnej szerokości (lub znanej szerokości), treść może być częściowo ukryta pod drugim elementem. @Bobo względna jest wystarczająca – FelipeAls

+0

również będzie odpowiadać, ale byłby taki sam jak ten. Stworzyłem skrzypce: http://jsfiddle.net/HjGrV/ –

2

position:absolute jest jedynym sposobem

DEMO http://jsfiddle.net/kevinPHPkevin/u4FWr/1/

.center { 
    display:inline-block; 
    position: absolute; 
    left:0; 
    right:0; 
} 

EDITED

nie wiem, czy to już sugerowano

Albo można absolute: position; prawo div zamiast

DEMO http://jsfiddle.net/kevinPHPkevin/u4FWr/3/

.right { 
    display:inline-block; 
    position: absolute; 
    right:0; 
} 
+0

jest to jedyny sposób.? ustawia lewy margines na środkowy div tak samo jak szerokość prawego div, a następnie ustawia środkowy margines div: auto .. jest to możliwy sposób.? –

+0

To jest możliwy sposób, ale nie polecam go. Innym sposobem byłoby ustawienie prawego div na pozycję absolute i zlokalizowanie go w prawo, bez unoszenia się, a następnie centrowania drugiego div odpowiednio. Zobacz moją edycję. – Vector

+0

ya i na to moja odpowiedź. –