2013-09-02 23 views
6

Mam dwa elementy span wewnątrz, aby wyrównać w środku div.Dwa elementy zakresu nie są wyrównane w pionie

<div class="position"> 
    <span class="yours">Your current position:</span> 
    <span class="name">New York</span> 
</div> 

Styl:

.position{ 
    height:70px; 
    background-color:gray; 
} 
.position span{ 
    line-height:70px; 
} 
.position .name{ 
    font-size:28px; 
} 

Live Demo

Jak widać, span.yours nie jest w środku.

A jeśli usunąć styl:

.position .name{ 
    font-size:28px; 
} 

Będzie ona działać.

Na czym polega problem?

+0

wygląda dobrze do mnie. Z jaką przeglądarką masz problem? – JohnFx

Odpowiedz

19

Problem polega na tym, że zarówno dzieci mają wartość początkową vertical-align baseline (jak zrobić wszystko elementy, które biorą udział w inline-formatting context) - więc zwiększając rozmiar czcionki, .yours pozostaje wyrównany z baseline z wbudowanego elementu siostrzanego.

Prostym rozwiązaniem w tym przypadku jest, aby zastąpić wartość początkową z middle - fiddle

.position span { 
    vertical-align: middle; 
} 
+3

Powinienem dodać do tej odpowiedzi, że faktycznie 'line-height' jest bezużyteczną właściwością w elementach śródliniowych, takich jak' span'. – Sunyatasattva

+1

@Sunyatasattva: Jeśli usunę "wysokość linii", "span" nie będzie wyrównany na środku. – hguser

Powiązane problemy