chevron-left chevron-right

Piotr Nalepa Blog webmasterski

[CSS] Menu zakładkowe

Ta wersja
Opublikowano
Autor
Kategoria
CSS
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 17 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

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:

Przykład 1HTML
<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:

Przykład 2CSS
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:

Przykład 3JavaScript
$(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.

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!