chevron-left chevron-right

[CSS] Menu zakładkowe

W tym artykule pragnę Wam przedstawić sposób w jaki można przygotować efektowne menu zakładkowe za pomocą CSS. Takie menu w szczególności przydają się do stron które zawierają wiele treści i funkcjonalności, np: jedna zakładka do pogody, jedna zakładka do newsów, itp., itd.
Przykład ten działa we wszystkich przeglądarkach oprócz IE6, który mimo niechęci web-developerów do niego, wciąż znajduje się w użyciu w Internecie. Dlatego dla IE6 użyję biblioteki jQuery, aby i tam to menu działało.

Zaczniemy od kodu HTML, który wygląda następująco:

<div id="menu">
         <div id="zakladka1">
              <p>Muszę ja wam służyć, moje panny córki choć młodzik, ale szerzej niż się ta prędka, zmieszana rozmowa w Ojczyźnie Boga, przodków swoich nie było. bo.</p>
         </div>
         <div id="zakladka2">
              <p>Grzeczność nie mogę na siano. w niebytność Wojskiego Woźny cicho wszedł służący, i z nim odszedł, wyskoczył na wierzch boru i psy za stołem. Z.</p>
         </div>
         <div id="zakladka3">
              <p>Dalej w koryta rozlewa. Sędzia, a często bez ogona jest zagadką, młódź lubi zagadki. Roztargniony, do usług publicznych sposobił z powozu. konie porzucone same widzi.</p>
         </div>
         <div id="zakladka4">
              <p>Raz w okolicy. i zabawiać lubił gesta). Teraz mu biło nadzwyczajnie. Więc szlachcic obyczaje chowa i w polskiej szacie siedzi Rejtan żałośny po łące ucichły.</p>
         </div>
    </div>

W treści divów użyłem tekstu wygenerowanego za pomocą tej strony.

Kod CSS dla tego przykładu wygląda następująco:

body {
	font-family: Arial, Helvetica, sans-serif;
}
#menu {
    width: 580px;
    margin: 100px auto;
}
#menu div {
    float: left;
    width: 25%;
    height: 300px;
    overflow: hidden;
}
#menu:hover div, #menu.hover div {
    width: 40px;
}
#menu:hover div:hover, #menu.hover div.hover {
    width: 440px;
    overflow: auto;
}
#zakladka1 {
	background: #999999;
}
#zakladka2 {
	background: #990000;
}
#zakladka3 {
	background: #00CC33;
}
#zakladka4 {
	background: #FFFF00;
}

Jak widać stworzyłem dodatkową klasę "hover", na której operuje kod napisany w JavaScripcie z użyciem biblioteki jQuery:

$(document).ready(function() {
    $("#menu, #menu div").mouseover(function() {
        $(this).addClass("hover");
    }).mouseout(function() {
        $(this).removeClass("hover");
    });
});

Style CSS i kod JavaScript umieszczamy w sekcji ‹head›

Dla przypomnienia dodam że style w sekcji ‹head› umieszczamy za pomocą znacznika ‹style›, a skrypty umieszczamy za pomocą znacznika ‹script›.

Demo z tego artykułu można zobaczyć tutaj.