Menu's in HTML en CSS I: Pulldown-menu

Bovenaan de bladzijde zie je een horizontale menubalk. Als je met de muis over de items gaat, verandert de achtergrondkleur een beetje. De muisaanwijzer verandert van een pijl in een handje. Soms verschijnt er een submenu.

Het ligt voor de hand om JavaScript in te zetten om de animaties in dit menu zichtbaar te maken, maar het kan ook met alléén CSS, dus helemaal zonder JavaScript.
Op deze pagina wordt uitgelegd hoe je dat kunt aanpakken.

CSS-id Niet wijzigen:
#CSSmenu 
position:fixed; top:0; left:0; display:block;
background-color:transparent; z-index:25;
De waarde van z-index is meestal voldoende. Als je merkt dat (delen van) de content over het menu heen schuiven in plaats van er onderdoor, moet je z-index verhogen.
* html #CSSmenu 
Geheel ongewijzigd laten.
Internet Explorer kan niet overweg met position:fixed. Deze code zorgt er voor dat IE het menu wel goed weergeeft.
#CSSmenuExtra 
position:fixed; top:0; left:0; display:block;
background-color:inherit; z-index:20;
z-index moet iets kleiner zijn dan de z-index in #CSSmenu. Als je z-index in #CSSmenu moet verhogen, moet je deze waarde van z-index evenveel verhogen.
Dit block zorgt er voor dat er altijd een kleine marge is tussen de leesbare content en de bovenbalk van het menu, óók als je gaat scrollen.
* html #CSSmenuExtra 
Geheel ongewijzigd laten.
#CSSmenu a 
background-color:inherit; display:block
#CSSmenu a:hover 
Geen beperkingen
#CSSmenu ul 
Geheel ongewijzigd laten.
#CSSmenu li 
float:left;
#CSSmenu ul li ul 
Geheel ongewijzigd laten.
#CSSmenu ul li ul li 
Geheel ongewijzigd laten.
#CSSmenu ul li:hover ul 
Geheel ongewijzigd laten.
#CSSmenuWitruimte 
Geen beperkingen. Maak deze echter niet groter dan strikt nodig is!
CSS-id Opmaak attributen:
#CSSmenu 
• z-index. De hier toegepaste waarde van z-index (25) is meestal voldoende. Als je merkt dat (delen van) de content over het menu heen schuiven in plaats van er onderdoor, moet je z-index verhogen.
color. Hiermee stel je de kleur van de tekst in. Zie het item Kleurcodes voor tekst, links en achtergrond voor de waarden die je kunt gebruiken.
font-family. Hier is het default sans-serif (schreefloos) font gebruikt, omdat het goed leesbaar is. je kunt hier echter elk font inzetten wat je wilt. Letters met een schreef, zoals Times New Roman raad ik niet aan.
• font-size. De hier gebruikte waarde is 100%. Het hangt af van andere CSS-instellingen of je dit moet veranderen.
• font-weight. De hier gebruikte waarde bold geeft vaak goed leesbare resultaten.
#CSSmenuExtra 
• z-index. De waarde van z-index moet iets kleiner zijn dan de waarde die is gebruikt bij #CSSmenu.
• height. Neem de waarde ca. 20px groter dan de hoogte van de menubalk. Met een beetje spelen vind je de beste waarde.
#CSSmenuWitruimte 
• padding-top. Maak deze niet groter dan strikt nodig is! Met een beetje spelen vind je de beste waarde.
#CSSmenu a 
• color. Hiermee stel je de tekstkleur in, voor de menulinks waar de muis niet boven zweeft.
• padding. Hiermee geef je aan hoeveel ruimte er vrij moet blijven rond de links in de menu's. Dat is een kwestie van smaak. Hier is gebruikt: 2px boven en onder de tekst, 6px links en rechts van de tekst.
• text-decoration. Hiermee geef je aan of er een streep onder de tekst moet staan. De hier gebruikte waarde none geeft voor een menu als dit de beste resultaten.
#CSSmenu a:hover 
• background-color. Hiermee stel je de achtergrondkleur in, voor de delen van het menu waar de muis boven zweeft.
• color. Hiermee stel je de tekstkleur in, voor de menulinks waar de muis boven zweeft.
#CSSmenu li 
• background-color. Hiermee stel je de achtergrondkleur in, voor de delen van het menu waar de muis niet boven zweeft.
• color. Hiermee stel je de tekstkleur in, voor de menulinks waar de muis niet boven zweeft.
• width. Dit is de breedte van de menu-items. Voor deze toepassing is die gedefinieerd in em. Als je de grootte van de letters verandert, verandert de breedte van de items mee.
• border. Hiermee maak je een rand rond elk menu-item. Dit mag je ook weglaten.

Inbouwen in je eigen site gaat als volgt:

Gebruik:

De code van het voorbeeld ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<style>
#CSSmenu { position:fixed; top:0; left:0; display:block; z-index:25;
  background-color:transparent; color:#fff; font-family:sans-serif;
  font-size:100%; font-weight:bold }
* html #CSSmenu { position:absolute }
#CSSmenuExtra { position:fixed; top:0; left:0; display:block; z-index:20;
  background-color:inherit; width:100%; height:35px }
* html #CSSmenuExtra { position:absolute }
#CSSmenuWitruimte { padding-top:15px }
#CSSmenu a { background-color:inherit; color:#fff; display:block;
  padding:2px 6px; text-decoration:none }
#CSSmenu a:hover { background-color:#0cf; color:#fff }
#CSSmenu ul {list-style-type:none; margin:0; padding:0 }
#CSSmenu li { background-color:#09c; float:left; width:9em;
  border:1px solid #fff }
#CSSmenu ul li ul { display:none }
#CSSmenu ul li ul li { float:none }
#CSSmenu ul li:hover ul { display:block }
</style>
(Zet dit aan het begin van de <BODY>).
<div id="CSSmenuExtra"></div>
<div id="CSSmenu">
<ul> <!-- Horizontale balk -->
<li><a href="#">Home</a></li>
<li><a href="#">Handig</a>
  <ul> <!-- Submenu -->
  <li><a href="#">Nieuws</a></li>
  <li><a href="#">Weer</a></li>
  <li><a href="#">Telefoonboeken</a></li>
  <li><a href="#">Woordenboeken</a></li>
  <li><a href="#">Routeplanners</a></li>
  </ul>
</li>
<li><a href="#">Fractals</a>
  <ul> <!-- Submenu -->
  <li><a href="#">Zelf doen</a></li>
  <li><a href="#">Software</a></li>
  <li><a href="#">Wiskunde</a></li>
  <li><a href="#">Fractal-links</a></li>
  </ul>
</li>
<li><a href="#">HTML</a>
  <ul> <!-- Submenu -->
  <li><a href="#">Nieuw</a></li>
  <li><a href="#">Alles</a></li>
  </ul>
</li>
<li><a href="#">Varia</a></li>
</ul>
</div>
 
<p id="CSSmenuWitruimte"></p>
.
. Rest van de content
.

Downloaden:
 
Druk op de knop: Download deze code  File: voorb297.zip, 820 bytes.

Opmerking:
 
Een vergelijkbaar menu, met wat meer toeters en bellen dan het hier gebruikte, vind je in het item Menu's in HTML en CSS II: Geanimeerd pulldown-menu.

 
terug

html-297; Laatste wijziging: 20 mei 2020