Budowniczy.net » Budowniczy » Artykuły » Kłopotliwe vertical-align

Kłopotliwe vertical-align

Dodany: 2006-11-15

  1. Wprowadzenie
  2. Elementy liniowe: baseline | middle | sub | super | text-top | text-bottom | <lenght> | top | bottom
  3. Tabele: top | middle | bottom
  4. Specyfikacje i linki

Wprowadzenie

Jednym z zagadnień CSS, przy którym zawodzi intuicja, jest własność vertical-align. Własność text-align wyrównuje w poziomie zawartość elementu względem środka, lewej lub prawej krawędzi, albo justuje. Można by więc oczekiwać, że vertical-align będzie zachowywała się podobnie w pionie. I dzieje się tak w przypadku komórek tabeli. Ale w pozostałych przypadkach spotka nas zaskoczenie - przy użyciu tej zawartości nie uda się ustawić zawartości w połowie wysokości. Zatem definiując vertical-align:middle uzyskamy poniższy efekt w przypadku komórki tabeli, ale w akapicie już nie.

Przykład wyrównania w pionie

Powodem tego jest fakt, że, wbrew intuicji, własność vertical-align nie wyrównuje zawartości bloku względem jego dolnej lub górnej krawędzi. Własność ta ustawia element inline (jakim jest również domyślnie obrazek) względem linii pisma. Na potrzeby artykułu wystarczy uproszczona poniższa definicja (więcej informacji: linie pisma w Wikipedii)

Linie pisma

Dlatego też błędne jest przypisywanie tej własności elementom, takim jak p lub div, i oczekiwanie, że ich zawartość zostanie np. wyśrodkowana w pionie. Są to elementy blokowe, zaś własność stosuje się do elementów liniowych.

Poniższe przykłady ilustrują różne wartości vertical-align. W pierwszych akapitach przykładów własność została przypisana wyróżnionemu słowu, zaś w drugich akapitach - kwadratowemu obrazkowi. W niektórych przykładach dodane są też wielkie litery "Ś", jako że górna linia tekstu znajduje się nie nad górną krawędzią wielkich liter, ale jeszcze wyżej - nad przestrzenią zarezerwowaną dla znaków diakrytycznych. W innych przykładach dodaliśmy drugi pionowy obrazek, wyższy od obrazka testowego. Testowe słowo jest też wyróżnione większą czcionką, aby lepiej było widać, do której krawędzi jest wyrównywane, co przy tym samym rozmiarze czcionki nie zawsze jest jasno widoczne.

Na pierwszy rzut oka przykłady z obrazkami mogą kojarzyć się trochę z własnością float. Jest to oczywiście błędne skojarzenie, bo obrazki nie są w żaden sposób oblewane tekstem. Przeciwnie, to obrazek jest ustawiany względem linii tekstu.

Elementy liniowe

Wartość baseline

Jest to wartość domyślna. Linia bazowa elementu lub dolna krawędź obrazka wyrównuje się z linią bazową zawartości. Słowo "test" znajduje się na tej samej wysokości, co otaczające wyrazy. Obrazek wydaje się być trochę wyżej, a to z racji wspomnianego wyrównania do linii bazowej. Jest on na tej samej wysokości, co dolna krawędź liter takim jak "m" czy "n", nie zaś litery "p".

Przykład zastosowania vertical-align:baseline

Wartość middle

Wyrównuje środek całego elementu (nie środek jego małych liter) ze środkiem małych liter zawartości.

Przykład zastosowania vertical-align:middle

Wartość sub

Przy tej wartości mamy element wyrównany z linią bazową dolnego indeksu, zatem element jest przesunięty w dół względem normalnego tekstu.

Przykład zastosowania vertical-align:sub

Wartość super

Wartość super wyrównuje względem linii bazowej indeksu górnego, czyli element przesuwa się ponad linię bazową zwykłego tekstu.

Przykład zastosowania vertical-align:super

Wartość text-top

Wartość ta wyrównuje względem górnej krawędzi czcionki. Aby lepiej pokazać tę wartość, wstawiliśmy drugi, wyższy obrazek, który jest wyrównany domyślnie, czyli względem linii bazowej. Widzimy, że górne krawędzie naszych elementów testowych wyrównane są w tym przypadku z górną krawędzią litery "Ś", nie zaś górną krawędzią drugiego obrazka, która znajduje się o wiele wyżej. Porównaj z wartością top.

Przykład zastosowania vertical-align:text-top

Wartość text-bottom

Wyrównuje względem dolnej krawędzi czcionki. Porównaj z wartością bottom.

Przykład zastosowania vertical-align:text-bottom

Wartość <lenght>

Ustawia linię bazową elementu o zadaną wartość powyżej lub poniżej linii bazowej zawartości rodzica. W poniższym przykładzie elementom nadaliśmy vertical-align: 10px oraz vertical-align: -10px. Wartością mogą też być procenty, liczone względem wartości line-heigth.

Przykład zastosowania vertical-align:10px

Wartość top

Wyrównuje górę elementu z górą całej linii, czyli górą najwyższego elementu tej linii, a nie z górną krawędzią czcionki. Z górną krawędzią czcionki wyrównuje wartość text-top.

Przykład zastosowania vertical-align:top

Wartość bottom

Wyrównuje dolną krawędź elementu z dołem całej linii, czyli dolną krawędzią najniżej położonego elementu, a nie z dolną krawędzią czcionki. Z dolną krawędzią czcionki wyrównuje wartość text-bottom. W przykładzie przesunęliśmy drugi obrazek w dół i widzimy, że to właśnie do jego dolnej krawędzi są wyrównywane elementy testowe.

Przykład zastosowania vertical-align:bottom

Tabele

W przypadku tabeli wartości przypisywane są elementom th oraz td, a wyrównują się względem linii bazowej wiersza tabeli, czyli elementu tr. Trzeba przy tym pamiętać, że komórka, dzięki atrybutowi rowspan, może się rozciągać na więcej niż jeden wiersz.

Wartość top

Góra komórki jest wyrównana z górą pierwszego wiersza, na który się rozciąga.

Wartość middle

Środek komórki jest wyrównany ze środkiem wierszy, na które się rozciąga komórka.

Wartość bottom

Dół komórki jest wyrównany z dołem ostatniego wiersza, na który się rozciąga.

Przykład zastosowania vertical-align w tabelach

Pozostałe wartości, omówione przy elementach liniowych, nie stosują się do komórek tabeli.

Specyfikacje i linki

Pełną specyfikację własności vertical-align można znaleźć w sieci pod adresem: http://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align.

Zachowanie własności w komórkach tabeli jest szczegółowiej opisane tutaj: http://www.w3.org/TR/CSS21/tables.html#height-layout

Komentarze

Ten artykuł możesz skomentować na witia.jogger.pl