Aby zablokować menu w HTML, należy uniemożliwić jego przemieszczanie się podczas przewijania strony lub zablokować interakcje użytkownika z menu (np. kliknięcia). Najczęściej przez „blokowanie menu” rozumiemy przyklejenie (przypięcie) menu na stronie lub czasowe wyłączenie jego funkcjonalności. Poniżej znajdziesz obszerny poradnik prezentujący różne techniki blokowania menu w HTML wraz z przykładami zastosowań.
Blokowanie menu na ekranie („sticky” oraz „fixed”)
Przypięte do górnej krawędzi (position: fixed)
Menu fixed zawsze znajduje się w tym samym miejscu, nawet podczas przewijania strony. Ten efekt uzyskujemy przez styl CSS:
<nav id="menu">
<ul>
<li><a href="#">Strona główna</a></li>
<li><a href="#">O nas</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
</nav>
#menu {
position: fixed;
top: 0;
left: 0;
width: 100%;
background: #333;
color: white;
z-index: 1000;
}
#menu ul {
margin: 0;
padding: 0;
list-style: none;
}
#menu li {
display: inline-block;
margin-right: 20px;
}
#menu a {
color: white;
text-decoration: none;
padding: 15px 20px;
display: inline-block;
}
Zastosowanie –
- główne menu serwisów informacyjnych,
- sklepy internetowe dla przycisków koszyka i loginu,
- nawigacja boczna w aplikacjach typu dashboard.
Przylepione do określonej pozycji (position: sticky)
Menu pozostaje w jednym miejscu do momentu przewinięcia go, wtedy „przykleja się” do określonej krawędzi.
<nav id="main-menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Blog</a></li>
</ul>
</nav>
#main-menu {
position: sticky;
top: 0;
background: #222;
color: #fff;
padding: 10px 0;
}
Zastosowanie –
- długie strony, gdzie istotne jest szybkie przemieszczanie się za pomocą głównego menu,
- sekcje dokumentacji lub FAQ.
Blokada interakcji użytkownika z menu
Możesz czasowo zablokować kliknięcia i inne interakcje (na przykład na czas ładowania lub przetwarzania danych):
<nav id="disabled-menu" class="disabled">
<ul>
<li><a href="#">Opcja 1</a></li>
<li><a href="#">Opcja 2</a></li>
</ul>
</nav>
.disabled {
pointer-events: none;
opacity: 0.6;
}
Zastosowanie –
- czasowa dezaktywacja połączenia w aplikacjach webowych,
- wyłączenie menu do czasu zalogowania użytkownika.
Zablokowanie położenia i wyglądu menu (klasyczne menu boczne)
Menu boczne, które nie znika przy przewijaniu:
<aside class="sidebar-menu">
<ul>
<li><a href="#">Panel główny</a></li>
<li><a href="#">Użytkownicy</a></li>
<li><a href="#">Ustawienia</a></li>
</ul>
</aside>
.sidebar-menu {
position: fixed;
left: 0;
top: 0;
width: 200px;
height: 100vh;
background: #444;
color: #fff;
padding-top: 30px;
}
.sidebar-menu ul {
list-style: none;
margin: 0;
padding: 0;
}
.sidebar-menu li {
margin-bottom: 15px;
}
Zastosowanie –
- panele administracyjne i systemy zarządzania treścią (CMS),
- aplikacje webowe typu CRM.
Przykład – rozwijane menu z blokadą pozycji
Połączone rozwijane menu z efektem „sticky”:
<nav class="dropdown sticky">
<ul>
<li>
<a href="#">Rozwijane</a>
<ul>
<li><a href="#">Podmenu 1</a></li>
<li><a href="#">Podmenu 2</a></li>
</ul>
</li>
<li><a href="#">Bez dropdown</a></li>
</ul>
</nav>
.dropdown.sticky {
position: sticky;
top: 0;
background: #333;
color: #fff;
}
.dropdown ul {
list-style: none;
padding: 0;
margin: 0;
}
.dropdown li {
position: relative;
display: inline-block;
}
.dropdown li ul {
display: none;
position: absolute;
background: #444;
}
.dropdown li:hover > ul {
display: block;
}
Zastosowanie –
- menu strony głównej serwisu informacyjnego lub portfolio,
- nawigacja główna sklepów internetowych.
Podsumowanie zastosowań
Blokowanie menu w HTML i CSS umożliwia:
- utrzymanie stałego dostępu do najważniejszych opcji na stronie niezależnie od przewinięcia,
- tworzenie przejrzystych interfejsów użytkownika w aplikacjach webowych,
- czasowe wyłączanie interakcji, np. w trakcie przetwarzania danych lub wymuszania warunków logowania,
- budowę zaawansowanych paneli bocznych oraz sticky headerów bez użycia JavaScript.
Dzięki zastosowaniu odpowiednich technik CSS, można uzyskać zarówno klasyczne „przyklejone” menu, jak i w pełni zablokować możliwość korzystania z menu, dostosowując się do potrzeb i koncepcji serwisu internetowego.