OBS! Innan du börjar använda de menyer som finns i denna guide är det viktigt att du har grundkunskaper i CSS » och då framförallt i CSS positionering » . Att bara använda menymallarna som de är ger ingen egen och unik layout och det är ju ganska meningslöst eller hur? Utgå ifrån mallarna och anpassa dem efter dina egna behov så får du din egen personliga design.
Innehåll och struktur
CSS - (Cascading Style Sheets) är stilmallar som
tillåter både den som skapar dokument och den som läser
dem att använda sin egen stilmall. I praktiken har CSS använts
till att formge dokument när det gäller färg, teckensnitt,
justering av text och objekt mm. En enda CSS-mall kan styra tusentals
dokument och det är då enkelt att ändra formateringen
genom att det bara i CSS-mallen. CSS har tagit HTML ett steg längre
och möjliggjort formateringar och effekter som inte fanns i HTML
standarden. En av fördelarna med CSS är att flera
mallar kan användas och de har då företräde inbördes
så att en "huvudmall" med de övergripande formateringarna
kan ersättas på en lägre nivå av en "lokal
mall" som då gäller före huvudmallen. CSS är
liksom XML/XHTML ett steg mot att separera innehåll och struktur
i dokument. All formatering bör ske i externa mallar vilket gör
att mängden kod i själva dokumentet minskar avsevärt och
gör att sidorna laddas snabbare i webläsaren. Då samma
mall används för varje dokument behöver inte webläsaren
läsa in formateringsanvisningar på nytt varje gång en
ny sida anropas.
Tillgänglighet
En målsättning med CSS är att läsaren ska kunna
påverka
utseendet av dokumentet när sidorna läses i webläsaren
vilket inte alltid har varit populärt bland författarna av
dokumenten då förändringar kan påverka webplatsens
layout. Detta har i praktiken inneburit att vissa grupper har utestängts
från att använda många platser på Internet.
Syn- och hörselskadade och andra har haft svårigheter att
ta del av innehåll på sidorna trots att det finns programvaror
för
tolkning av innehåll på websidor. Tillgänglighet är ett av ledorden när framtidens webplatser ska utformas och
då gäller detta inte bara de som har svårt att läsa
dokumenten på en PC. Ett av målen för W3C är
att göra webbaserat innehåll tillgängligt på fler
plattformar
än PC. Det kan vara för PDA (handdator), mobiltelefoner, enheter
för talsyntes och punktskrift (Braille). Genom att strukturera
dokumenten på rätt sätt ska alltså både
synskadade och hörselskadade kunna ta del av innehållet.
Det innebär
att många webplatser som byggts med layout som första prioritet
inte fungerar om de använder tex Frames, Iframes, Imagemaps, java,
javascript, nästlade tabeller, bilder utan ALT-text, GIF-animationer,
Flash, Shockwave, PDF-dokument osv. Många funktioner som används
idag går då¨alltså bort helt... (läs
mer om W3C och webstandards »)
CSS levels
CSS finns specificerat i olika "nivåer" där CSS1 (1996) innehåller information om relativt enkel formatering som
bakgrundsfärger, bakgrundsbilder, teckensnitt och justering av text. CSS2 (1998) går ett steg längre och ger möjlighet
att formge hela dokument med positionerade rektangulära områden
(boxar) som tidigare bara varit möjligt med tabeller (tables). CSS2
har förbättrats och finns i version CSS21 men kommer att ersättas
av CSS3 som idag inte är helt färdig. Håll
dig uppdaterad om alla specifikationer i CSS genom att besöka W3C
för mer information: CSS1 » - CSS2 » - CSS3 »
Läs mer om: grunderna i CSS » - CSS-effekter » - CSS-positionering » - CSS-layout »
CSS ska fungera fullt ut i en perfekt värld men webläsarnas värld är inte perfekt. Internet Explorer visar inte CSS korrekt enligt W3C (läs mer om W3C och docstandards ») och detta gäller även IE6. Tidigare versioner av IE är ännu sämre och om du tänker ta hänsyn till alla användare av IE<6 så måste du använda dig av korrekt doctype men även olika "hack" för att få det att fungera. I denna guide visas inte hur du anpassar CSS till IE<6 eller andra webläsare och vi hänvisar istället till resurser som visar metoderna:
CSS kan användas till menyer och är då i grunden vanliga listor <LI> som i kombination med positionerade boxar, bakgrundsbilder och andra egenskaper bygger en meny.
I exemplen nedan visas hur du utformar en vanlig punktlista till en menylayout och detta förutsätter att du har grundkunskaper i CSS » och då framförallt i CSS positionering » innan du följer guiden.
CSS-menyn utgår från en vanlig punktlista som kan ha de olika punkttyperna nedan:

klicka här för att se exemplet »
En vanlig punktlista behöver ingen CSS-formatering. I exemplet nedan är listan förberedd för länkning med en "dummylänk" i form av tecknet "#" som senare kan bytas ut till den riktiga sökvägen för länken:
Punktlistan kan ha punkttypen "circle", "square"
eller "none" och
anges med CSS-kod. I exemplet nedan används punkttypen square och
dessutom har egenskaper för länkarna angivits med
a:link - a:visited - a:hover - a:active
Ett alternativ till att använda de punkttyper som finns är
att skapa egna punkter i form av bilder. I exemplet
nedan används bilden "symbol.gif": ![]()

klicka här för att se exemplet »
Nästa steg i användningen av bilder är att använda en bakgrundsbild. Fördelen är att du kan ange egna värden för placering av listans innehåll i förhållande till punkten (bakgrundsbilden).

klicka här för att se exemplet »
Här används två CSS-mallar där "#meny" används till att ange att ingen "standardpunkt" ska användas. Dessutom anges marginal och padding till "0" vilket förbereder listan för att senare placeras i en positionerad box (där andra värden för marginal och padding kommer att anges). Mallen "#meny li" innehåller formatering av bakgrundsbilden som används som punkt i listan. I exemplet nedan är bakgrundsbilden 9 pixlar bred och genom att ange "padding 10px" placeras textinnehållet i listan intill listpunkten. Justeringen "left" och "center" gör att bakgrundsbilden placeras rätt vertikalt och horisontellt i förhållande till listans innehåll. Viktigt är också att ange "no-repeat" för att inte bakgrundsbilden ska upprepas vertikalt och horisontellt.
OBS! I menyexemplen används i första hand relativa enheter vid måttsättningen för att göra menyerna skalbara och tillgängliga på flera plattformar än PC - läs mer om enheter här »
Med bakgrundsbilder i kombination med läget "hover" kan du skapa en rollover-effekt i menyn. Det krävs minst två bilder - en för normalt läge och en för "onMouseOver-läget". I exemplet används dessutom en tredje bild för att visa aktiv sida då menyvalet är nedtonat.

klicka här för att se exemplet »
Använd dina egna bilder eller spara bilderna som används i exemplet:
| symbol.gif | symbol-over.gif | symbol-active.gif |
Om du använder samma menyer på flera sidor bör CSS-koden placeras i en extern mall (läs mer om tillämpning i grunderna i CSS »)
Bakgrundsbilderna och övriga egenskaper kan naturligtvis tillämpas direkt på märket <UL> och <LI> men genom att istället låta en container få formateringen så gäller den endast för menyn och du kan då ha flera andra listor och/eller menyer i samma dokument. Mallen med namnet "#menycontainer" används tillsammans med elementen <a> - <ul> - <li>. Dessutom används den anpassade mallen "a#current" som anger bakgrundsbild och textfärg för länk på aktiv sida.
När du använder selektoren "a#current" för att ange egenskaper för aktiv sida måste du ange den i nytt listelement för varje ny sida som använder menyn.
I exemplet nedan är Sidan 2 den aktiva sidan och id="current" är nu flyttat till meyvalet "Meny 2":
Förutsättningen för att använda en bakgrundsfärg och en eventuell rollover-färg är att listelementen konverteras till block med koden "display:block". Längden på blocken bör anges men inte höjden om menyhöjden ska förändras i förhållande till textinnehållet. Exemplet nedan använder rollover-läge (a:hover) och bakgrundsfärg för länk till aktiv sida:

klicka här för att se exemplet »
Mallen #meny används för att ange bakgrundsfärg, bredd och nedre kantlinje. De övriga kantlinjerna anges för varje länkat listelement #meny a som också innehåller information om avstånd mellan kanter och textinnehåll (padding):
Ett avstånd mellan menyvalen (listelementen) så att de liknar fristående "knappar" skapas med en bottenmarginal:

klicka här för att se exemplet »
Mallen #meny li har som enda uppgift att ange bottenmarginalen. Hela kantlinjen anges nu endast i mallen #meny a då varje menyval ska ha en ram.
En bakgrundsbild i form av mönster eller toning som i exemplet kräver inte att bilden är exakt lika stor som blocket med textinnehållet. Det är ändå en bra idé att göra den större så att bilden inte upprepas ( om det inte är ett mönster som ju ska upprepas). Den tonade bilden i exemplet nedan är något högre än menyinnehållet och upprepas åt höger:

klicka här för att se exemplet »
Använd dina egna bilder eller spara bilderna som används i exemplet:
| bg-toning.gif | bg-toning_over.gif |
Mallarna är lika som i tidigare exempel men viktigt är att bakgrundsfärgen anges till "transparent" för att bakgrundsbilden ska synas.
En "rollover-knapp" som byts ut vid OnMouseOver visas vid läget a:hover och det behövs då bara en bild som ersätter originalbilden när muspekaren förs över menyvalet. Detta kan vara ett alternativ till att använda javascript » med OnMouseOver-funktion. OBS! Bilderna som används i rollover-läget förladdas inte med CSS ("preload" i javascript) och det kan innebära en fördröjning innan bilden visas. Om du använder många bilder eller bilder med stor filstorlek kan det vara ett bättre alternativ att använda javascript. Den stora fördelen med CSS är att CSS-koden är betydlig kortare än javascriptkoden.

klicka här för att se exemplet »
Använd dina egna bilder eller spara bilderna som används i exemplet:
| knapp.gif | knapp_over.gif |
Menyn i exemplet är inte skalbar som i tidigare exempel. Det krävs exakta mått för att menyblockens mått ska stämma med bildens storlek och därför används enheten pixlar i exemplet.
Den horisontella CSS-menyn är precis som den vertikala CSS-menyn i grunden en punktlista (se ovan ») där punkterna ligger i linje horisontellt.

klicka här för att se exemplet »
Punktlistans element placeras i horisontell linje genom att ange display: inline och standardpunkterna tas bort med list-style-type: none i mallen "#meny".
Bakgrundsfärger anges för listelementen på samma sätt som i en vanlig vertikal punktlista (avståndet mellan listelementen är standard och inte angivet i mallen).

klicka här för att se exemplet »
Marginal i förhållande till sidans kanter och andra objekt samt font-egenskaper anges i mallen #meny. Avstånd mellan menytexten och bakgrundsfärgens ytterkant anges i mallen #meny a som "padding". Övriga egenskaper för länkarna har angivits med a:link - a:visited - a:hover - a:active.
För mer avancerade meny-layouter används containers (boxar) för bättre kontroll och boxarna kan dessutom placeras positionerade i förhållande till varandra - läs mer om CSS positionering »

klicka här för att se exemplet »
Mallnamnet som används är här #menycontainer och omsluter hela listan med <div> till skillnad från tidigare exempel där mallen #meny var tillämpad på själva listan <UL>. Här används "float" för att placera listelementen över bakgrundsfärgerna. Notera att bakgrundsfärgen som gäller alla menyval nu är angiven i mallen #menycontainer ul a istället för som tidigare i varje status för länk; a:link och a:visited. Avståndet mellan menyvalen kan nu anges med "margin-right" istället för den standardavstånd som gällde i det föregående exemplet.
Containern som ju inte har något innehåll (förutom menyn) kan även fungera som menylist som sträcker sig över hela sidan eller har en angiven bredd.

klicka här för att se exemplet »
Notera att bakgrundsfärgen som gäller alla menyval nu är angiven i mallen #menycontainer ul för att gälla för menylisten som sträcker sig bakom menyn. Inget avstånd mellan menyvalen finns i exemplet men kan naturligtvis anges om du har olika färger på menylisten och menyvalen.
Undermenyer skapas i en punktlista med flera nivåer. Varje nivå inleds med <UL> och olika mallar kan tillämpas för de olika nivåerna i listan. Exemplet nedan är en vanlig oformaterad lista som innehåller länkade listelement:

När listan kopplas till mallen "meny.css" blir den en meny:

klicka här för att se exemplet »
Formateringen är likadan som i tidigare menyexempel men undermenyn har mallnamnet "#meny ul a" där ul avser en undernivå i listan. Har du flera undernivåer används mallnamn som tex "#meny ul ul a". Om du vill ange egenskaper för aktiv länk använder du mallen "#meny a#current" till huvudmenyer och #meny a#subcurrent" till undermenyer.
När du inkluderar samma meny på alla sidor i din webplats kan du använda länkar med sökvägar som är relativa till dokumentet som i exemplet ovan. Det fungerar om alla sidor som använder menyn ligger i rotmappen (root folder) på din webserver men inte om du har dina sidor i undermappar.
Om sidorna ligger i undermappar och länkarna har sökvägar som är relativa till dokumentet kan menyn se ut så här i "sida6.php". (fungerar inte om du använder den i "sida5.php" eller någon av de övriga sidorna eftersom sökvägen då blir fel):
Du kan använda absoluta sökvägar som innehåller domännamnet men om du har flera domännamn som pekar till samma webplats fungerar inte detta. I exemplet ovan är den absoluta sökvägen till "sida6.php":
http://www.webdesignskolan.se/mapp/undermapp6/sida6.php
Den absoluta sökvägen fungerar inte om besökaren använder ett annat av våra domännamn som tex:
www.webdesignskolan.com eller www.webdesignskolan.nu
Lösningen är att använda sökvägar som är relativa till dokumentroten (site root) för att vara säker på att den inkluderade menyn fungerar i alla sidor i din webplats oavsett vilket domännamn som används.
Menyn kan då se ut så här:
Gå vidare: CSS-meny med PHP include »