Joomla CSS - Uw bron voor CSS stijlen!Joomla menu / main menu css stijlen

Bij het installeren van Joomla, zonder voorbeeldgegevens, is één menu reeds aangemaakt, het Main menu (in de voorbeeld website is Main Menu hernoemd naar Hoofdmenu). Standaard is de menustijl een lijst. Het is aan te bevelen geen gebruik te maken van de legacy lijsten (horizontaal, verticaal en platte lijst). In de voorbeeld website ziet het nog ongestijlde menu er als volgt uit.

Hoofdmenu ongestijld

Het is raadzaam, wanneer u het menu specifiek wilt stijlen, om bij de module instellingen van het menu suffixen toe te voegen. Vaak volstaat het toevoegen van de module class suffix, maar je kunt het menu ook een menu class suffix toevoegen (voor het stijlen van het list-item) of een menu tag ID (een id toevoegen aan de ul). In ons voorbeeld hebben we alle suffixen een class meegegeven van “_hoofdmenu”.

Structuur

div.moduletable_hoofdmenu
h3 Hoofdmenu
ul.menu_hoofdmenujoshoofdmenu
li.active.item1#current a
li.item2 a
li.item3 a
li.item4 Etc.

We kunnen dit menu op vele manieren anders stijlen, bijvoorbeeld met een achtergrondkleur, zonder bullits. We hebben onderstaande stijlen toegepast.

div.moduletable_hoofdmenu h3 {
   margin: 5px 16px 0 0;
   padding: 3px 0 3px 3px;
   color: #ffffff;
   background-color: #ff2700;
}

div.moduletable_hoofdmenu ul.menu_hoofdmenu {
   list-style: none;
   margin: 0 16px 10px 0;
   padding: 0;
}

div.moduletable_hoofdmenu ul.menu_hoofdmenu li a, 
div.moduletable_hoofdmenu ul.menu_hoofdmenu li a:visited  {
   display: block;
   margin: 1px 0 1px 0;
   padding: 3px 4px 3px 4px;
   color: #ffffff;
   text-decoration: none;
   background-color: #ff2700;
}

div.moduletable_hoofdmenu ul.menu_hoofdmenu li a:hover, 
div.moduletable_hoofdmenu ul.menu_hoofdmenu li.active a  {
   display: block;
   margin: 1px 0 1px 0;
   padding: 3px 4px 3px 4px;
   color: #ffffff;
   text-decoration: none;
   background-color: #8a0f00;
}

Met deze stijlen ziet het menu er als volgt uit.

Hoofdmenu met achtergrondkleuren 

Het is ook mogelijk om achtergrondafbeeldingen toe te passen. We gebruiken hiervoor de volgende 2 afbeeldingen.

hoofdmenu (a, a:visited) en hoofdmenu_hover (a:hover) 

div.moduletable_hoofdmenu h3 {
   margin: 5px 16px 0 0;
   padding: 3px 0 3px 3px;
   color: #ffffff;
   background-color: #333333;
   border: 1px #660000 dotted;
}

div.moduletable_hoofdmenu ul.menu_hoofdmenu {
   list-style: none;
   margin: 0 16px 10px 0;
   padding: 0;
}

div.moduletable_hoofdmenu ul.menu_hoofdmenu li a, 
div.moduletable_hoofdmenu ul.menu_hoofdmenu li a:visited  {
   display: block;
   padding: 2px 0 7px 4px;
   color: #660000;
   text-decoration: none;
   background-image: url(../images/hoofdmenu.gif);
   background-position: top left;
   background-repeat:repeat-x;
}

div.moduletable_hoofdmenu ul.menu_hoofdmenu li a:hover, 
div.moduletable_hoofdmenu ul.menu_hoofdmenu li.active a  {
   display: block;
   padding: 2px 0 7px 4px;
   color: #660000;
   text-decoration: none;
   background-image: url(../images/hoofdmenu_hover.gif);
   background-position: top left;
   background-repeat:repeat-x;	
}

Met de achtergrond afbeeldingen ziet het menu er als volgt uit. 

Hoofdmenu met achtergrond afbeeldingen 

 

Commentaar (19)
  • Bas  - Wat als ik dit bij alle menu's wil?
    Ik wil de stijl niet alleen op één menu, maar op alle. Hoe doe ik dat?

    en nog iets... De module titels zijn niet zichtbaar, hoe maak ik deze zichtbaar?

    deze site is extreem handig, ga zo verder!
  • Rob van Oudheusden  - Menustijl
    Hallo Bas,

    Wanneer je alle menustijlen gelijk wil houden benoem je geen module class suffix. De module titels regel je in de administrator module bij de module menu.

    Geef even de website op waar het over gaat dan kan ik even kijken.
  • Bas  - Al een oplossing
    Ik heb het al zelf uitgevogeld :D. U krijgt een bericht als mijn joomla site klaar is!
  • Shiva
    Hallo,

    Ik wil alleen afbeeldingen als menu-item, en dan voor elk menu item een andere achtergrond afbeelding. Ik krijg het maar niet voor elkaar. Heeft u daar wellicht ook een voorbeeld van hoe dat werkt?
  • Rob van Oudheusden  - Menuplaatjes ipv tekst
    De eenvoudigste methode is om per menuitem een afzonderlijke module te maken, om per item een verschillend plaatje en mouse-over plaatje te krijgen. Ook kun je, bij één menumodule gebruik maken van de verschillende classes per item.

    In het css bestand kun je dan per menumodule of menuitem het plaatje als een background-image opnemen.

    Verder zet je de font-size en eventueel de line-height op 0.

    Als je een voorbeeld wilt zien kun je terecht op http://www.bramrozafestival.nl/index.php

    De menu items aan de linkerkant "historie", "Expositie", "Boottocht"etc. zijn op die manier gedaan.

    Ik hoop dat je er zo uitkomt.
  • Shiva
    Mijn voorkeur gaat uit naar 1 menumodule met verschillende classes. Tot nog toe is me dat niet gelukt. Ondanks het vele gegoogle en rtfm-en.

    Ik ga het voorbeeld in ieder geval bestuderen en proberen.

    Bedankt!
  • Willem Siebe Spoelstra  - Menu CompasDesign
    Hoi,

    Kunt u mij vertellen hoe ik een menu maak zoals die op http://www.compassdesigns.net/?

    Ik vind het een mooi effect dat zodra je op een button hovert je een verdere toelichting ziet.

    Zie uw reactie graag tegemoet.

    Mvg,

    Willem
  • Rob van Oudheusden  - Menu
    Het beste kunt u hiervoor een externe component gebruiken. Zelf heb ik een voorkeur voor SWmenuPro (geen gratis component), waar deze menustructuur al deels inzit.

    Ook kunt u een dergelijk menu zelf bouwen, maar dat vergt wat meer specialistische kennis.

    Als u hierbij hulp nodig heeft kunt u dit vragen.
  • Willem Siebe Spoelstra  - Dankjewel
    Hoi Rob,

    Dank voor je vlotte antwoorden en toelichtingen.

    Even één antwoord op mijn meerdere posts... wat betreft de aanpassingen die op de site nog doorgevoerd worden, geweldig. Ik kwam deze onvolkomenheden uiteraard tegen omdat ik de hele site aan het doorlopen ben (inmiddels gedaan). Ik wil je nogmaals de complimenten geven voor de site, dit is een ontzettend goede bron voor iedere Joomla gebruiker.

    Ik ga uiteraard even opzoek dan naar een gratis component als die aanwezig is. Heb ook al een berichtje geplaatst op 2 fora.

    Het liefst wil ik het namelijk wel zelf 'CSS-en' als het bij CSS blijft (en geen javascript bijvoorbeeld, want daar snap ik niets van). Dit omdat ik het wellicht nu niet zelf kan en zelf ZIE wat de mogelijkheden zijn, maar de code wel zal snappen. Zo leer ik natuurlijk weer bij...

    Maar goed, we zullen kijken welke reacties ik krijg, dat is nog altijd even afwachten ;-).

    Groetjes Willem
  • Willem Siebe Spoelstra  - Hoi
    Hoi, ik heb nog even de demo's bekeken van het door u genoemde component, ik zie daar echter niet in wat ik zoek.

    Heeft u misschien een goede bron waar ik de menustructuur van CompasDesign onder de knie kan krijgen?

    Groet Willem
  • Rob van Oudheusden  - Compassdesigns Menu
    Beste Willem,

    De demo's laten alleen de standaardvarianten zien. Hieraan kun je niet meteen zien dat het Compassdesigns menu met aanvullende CSS te maken is. Dit is echter wel zo.

    Ik adviseer je om van deze component gebruik te maken en met CSS te stijlen tot het gewenste menu. Zelf bouwen kan ook zonder javascript, alleen werkt het menu is dan NIET in IE6. Het huidige Compassdesigns menu werkt ook NIET in IE6 of oudere browsers.

    Met de menucomponent van SWmenuPro werkt het menu wel in IE6 omdat dit menu ook javascript genereert, zonder dat je dit zelf hoeft te programmeren.
  • Jos Bogers  - horizontaal menu
    Ik ben gewend om in HTML en CSS een website te maken, maar Joomla schijnt makkelijker te zijn zegt "men" . Maar ik wil een horizontaal menu op zetten maar zie niet goed hoe . Wie kan mij helpen?
  • Willem-Siebe  - Horizontaal menu
    Hoi Jos,

    Je kunt dat doen door naar modulebeheer te gaan, klik je op main menu en daar kun je de menustijl aanpassen van lijst naar horizontaal.
    Dit wordt echter niet geadviseerd (waarom weet ik niet). Omdat ook ik mijn websites maakte met html en css, heb ik het main menu ook gewoon gestijld met css. Zoals je wellicht weet is het menu een lijst en kun je door gebruik te maken van float: left bij volgens mij het li element een horizontale balk maken.

    Veel succes
  • Jos  - horizontaal menu
    Willem
    dank je. Ik heb een website voor mijn ZZP-ende zoon gemaakt en wil mijn handen min of meer terugtrekken van de website. Er is mij toen aangeraden om de website om te zetten in Joomla, zodat hij zelf de wijzigingen kunnen aanbrengen, zonder kennis van CSS en Html. Dus wil ik het gaan proberen.
  • Willem-Siebe  - horizontaal menu
    Hoi, nou daar is Joomla heel geschikt voor!
    Hij kan door in te loggen heel makkelijk alles wijzigen, zowel in de backend als frontend (op de website zelf). Veel succes!
  • Jos  - horizontaal menu
    Willem Siebe,
    Kun je mij specifiek zeggen hoe ik een horizontaal (eigen) menu kan krijgen. Voor iemand die het systeem kent is het natuurlijk gemakkelijk maar .... ik heb daar moeite mee

    alvast bedankt
  • Willem-Siebe  - mail me maar even
    Hoi Jos,

    Stuur maar even een email naar willemsiebespoelstra at hotm . com

    Groet Willem
  • Karin Pronk  - menu
    Allereerst bedankt voor dit leerzame artikel. Ik ben een Joomla newbie min of meer.
    Is het ook mogelijk om als menuiten een plaatje te gebruiken? Ik moet een voormalige dreamweaver site omzetten naar joomla en daar worden rollovers gebruikt in het menu, 2 plaatjes per menuitem.

    Alvast bij voorbaat dank,

    Karin
  • Rob van Oudheusden  - Menu
    Hallo Karin,

    Als je de standaard lijst in Joomla als menu-instelling gebruikt (dus geen legacy varianten), dan is de linktekst in een "span" aangegeven. Als je dus de stijl meegeeft (op basis van het voorbeeld met menu achtergrond plaatjes op deze pagina):

    div.moduletable_hoofdmenu ul.menu_hoofdmenu li a span {display:none}

    dan wordt de linktekst verborgen en is alleen het plaatje zichtbaar. Hoe je de plaatjes met link en hover moet stijlen staat al op deze pagina aangegeven.

Schrijf commentaar
Uw contact gegevens:
Commentaar:
Beveiliging
Voer de anti-spam code in die in het plaatje staat.