killbox

Chciałbym pokazać Wam szybki i prosty sposób jak zrobić zakładki nawigacji z tekstem wycentrowanym w pionie. Zakładki te będą miały stałą szerokość, będzie także można użyć w nich dwóch (a nawet więcej) wierszy tekstu. No to zaczynamy.

Powiedzmy, że nasz kod CSS wyświetlający zakładki wygląda mniej więcej tak:

#tabnav {
	margin: 0;
	padding: 0;
	height: 42px;
	background: url(tab_bottom.gif) repeat-x bottom;
}
#tabnav li {
	list-style: none;
  	display: inline;
}
#tabnav li a {
	padding: 5px;
	color: #838843;
	text-decoration: none;
	border: 1px solid #D7CB80;
	background: #EFEFD3;
	float: left;
	text-align: center;
	width: 100px;
	height: 30px;
	margin: 0 3px;
}

A teraz prosty kod HTML:


W rezultacie powstają ładne zakładki, ale tekst nie jest jeszcze odpowiednio wyrównany. Jak go wyrównać? Nie ma co bawić się w display: table bo to jest dobre dla elementów blokowych lub większych ilości tekstu. W naszym przypadku wystarczy nadać odpowiednią wartość dla line-height.

Zwróćcie uwagę, że #tabnav li a ma wysokość 30px. W takim razie do #tabnav li dodajemy line-height: 30px;. W ten sposób wyrównaliśmy zakładki z jednym wierszem tekstu. Teraz zajmiemy sie zakładką czwartą w której są 2 wiersze… Dodajemy nową klasę:

#tabnav li.double {
	line-height: 15px;
}

Mamy 2 wiersze więc dzielimy 30px na 2 i stąd wzięło się 15px dla line-height. Jeśli chcieli byśmy zrobić 3 wiersze to ustawiamy wysokość zakładki na np. 60px i analogicznie dzielimy przez 3 co daje nam line-height: 20px (oczywiście wysokość może być mniejsza lub większa, wedle uznania). Należy także nadać klasę .double odpowiedniemu

  • w kodzie HTML. Nasze kody CSS i HTML zmieniły się następująco:

    #tabnav {
    	margin: 0;
    	padding: 0;
    	height: 42px;
    	background: url(tab_bottom.gif) repeat-x bottom;
    }
    #tabnav li {
    	list-style: none;
    	display: inline;
            line-height: 30px;
    }
    #tabnav li.double {
    	line-height: 15px;
    }
    #tabnav li a {
    	padding: 5px;
    	color: #838843;
    	text-decoration: none;
    	border: 1px solid #D7CB80;
    	background: #EFEFD3;
    	float: left;
    	text-align: center;
    	width: 100px;
    	height: 30px;
    	margin: 0 3px;
    }

    HTML:

    
    

    W ten sposób powstało to czego oczekiwaliśmy, czyli zakładki z tekstem wyrównanym w pionie.

    I to by było na tyle. Mam nadzieję, że komuś się to przyda. Powyższy kod działa bez problemów w Firefoxie, IE 6 i Operze (na innych nie testowałem).

    UPDATE: zgodnie z sugestią Riddle’a zrobiłem wersję na em’ach

  • 
    1. Riddle March 16th, 2007, 01:35

      # Odpowiedz Cytuj

      A do tego jak pobawisz się Em Calc i zapodasz emy zamiast piksli, to się wszystko będzie ładnie powiększało. :>

    2. castus March 17th, 2007, 15:24

      # Odpowiedz Cytuj

      BTW sprytny pomysł na pionowe wyrównanie. Z początku myślałem, że będzie to coś oparte o display: table dla DIVów, myliłem się ;)

    • Wymagane pola oznaczone są
    • Pisz tylko na temat, nie spamuj
    • Komentarze nie zgodne z powyższym będą kasowane