2012-02-28 19 views
14

Po zastosowaniu elementu 1em przyjmuje wartość domyślną przeglądarki (zwykle 16 pikseli) lub wartość rozmiaru czcionki dla jej elementu nadrzędnego, w prawo ?. Ale zauważyłem, że jeśli użyję czegoś takiego jak margin-top: 1em w elemencie h1 (bez użycia resetowania arkusza stylów, a zatem h1 jest ustawione na font-size: 32px), to 1em jest równe 32px, nawet jeśli jego element nadrzędny jest ustawiony na font-size: 16px.Margines i dopełnienie przy użyciu em

Jednak używając czegoś takiego jak rozmiar czcionki: 100%; rozwiązuje rozbieżność.

Czego mi brakuje?

+0

Twoja przeglądarka? Czy zapewniłbyś skrzypce? –

+0

Chrome 17 stabilny i zaznaczony również w Firefoksie. –

Odpowiedz

12

Kiedy 1em jest stosowane do elementu, przyjmuje domyślną wartość przeglądarki (zazwyczaj 16 pikseli) lub wartość rozmiaru czcionki swojego rodzica, prawda?

Nie, to trwa własnyfont-size, obliczony na podstawie jego rodzica (lub domyślnej przeglądarki dostarczanej wartości). Ponieważ dostarczona przez przeglądarkę font-size z h1 ma 32 piksele, wynikowy margines wynosi 32 piksele.

Jednak używając czegoś takiego jak rozmiar czcionki: 100%; rozwiązuje rozbieżność.

Ustawiając font-size: 100%; lub font-size: 1em; na elemencie, mówisz go używać 100% rozmiaru czcionki rodzica, więc ustawienie 1em jako długości na cokolwiek innego pójdą że 100%.

+0

No cóż, to jest oparte na odziedziczonej wartości. To wyjaśnia to! –

+3

Opiera się na obliczonej wartości, a nie na wartości odziedziczonej. Jest subtelna różnica :) – BoltClock

+0

@BoltClock możesz rozwinąć nieco dalej? Miałem podobne zrozumienie, że em jest obliczane na podstawie domyślnego rozmiaru czcionki przeglądarki 16 pikseli. Cytaty do W3 również byłyby świetne. –

9

1em jest równy rozmiarowi czcionki elementu w pytaniu. Więc używając go z marginesami, będzie to odpowiednik rozmiaru czcionki elementu, na który aplikujesz margines.

+1

Świetnie !. Dzięki :-) –

Powiązane problemy