Webtips - Meny
Det automatiserade sättet
Detta sättet är lättast att använda om sidorna är skrivna med templates, eftersom man inte behöver göra någon anpassning på varje sida. Man fixar allt i templaten och ett par gemensamma filer.
menutest.css | |
/* ** Simple styles */ h1 { font-family: Verdana, Arial, Helvetica, sans-serif} body { font-family: Verdana, Arial, Helvetica, sans-serif} a { text-decoration: none; color: #224466; font-weight: bold} /* ** Style for the current item in the menu */ body.index a#menuitem1, body.page1 a#menuitem2, body.page2 a#menuitem3, body.page3 a#menuitem4, .header { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; text-decoration: none; color: #FFFFFF; } /* ** Style for the not selected items in the menu */ a.header { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; text-decoration: none; color: #CCCCCC; } /* ** Style for highlighting an item in the menu, when the cursor ** is located over the item */ a.header:hover { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; text-decoration: none; color: #FFFFFF; } |
Här används i stort sett samma style sheet som i förra exemplet. Det är de rödmarkerade raderna som skiljer sig. Dessa rader tillsammans med websidan, namnet på websidan och en javascript-fil, ser till att den nuvarande sidan blir markerad i menyn.
body.index tillsammans med a#menuitem1 används av menyn, på websidorna, för att tala om att på sidan som heter index.html ska id=menuitem1 vara markerat. body.page1 tillsammans med a#menuitem2 anger att på sidan page1.html ska id=menuitem2 vara markerat osv. Här nedan kan man se hur det hela används på en websida.
index.html | |
<html> <head> <title>Menutest</title> <link rel="stylesheet" href="menutest.css" type="text/css"> <script src="menutest.script" type="text/javascript"></script> </head> <body onload="document.body.className = pagename()" bgcolor="#FFFFFF" text="#004466"> <table width="95%" border="0" cellspacing="0" cellpadding="0" bgcolor="#006699"> <tr bgcolor="#666666"> <td><img src="space.gif" width="1" height="15"></td> <td colspan="6" valign="middle"> <div class="header"> <a id="menuitem1" class="header" href="index.html">Hem</a> | <a id="menuitem2" class="header" href="page1.html">Sida 1</a> | <a id="menuitem3" class="header" href="page2.html">Sida 2</a> | <a id="menuitem4" class="header" href="page3.html">Sida 3</a> </div> </td> </tr> </table> <h1>Exempel på meny</h1> <h2>Hemsidan</h2> </body> </html> |
Lägg märke till att sidnamnet hämtas med hjälp av javascriptet pagename(), som finns i filen menutest.script. Scriptet returnerar namnet på nuvarande websida, med extension (t.ex. .html) och sökvägen borttagen. Scriptet ser ut enligt följande:
menutest.script | |
/* ** This functions retrieves the file name of the supplied path, ** excluding the extension. Both / (slash) and \ (backslash) are ** handled as directory separators. If no file name is included ** in the path, the file name "index" will be returned. ** ** Example: ** ======== ** path = "/C:\Hemsida\TPP-linktest\links.html" or ** path = /links.html ** ** ==> "links" */ function get_pagename(path) { last_slash = path.lastIndexOf("/") last_backslash = path.lastIndexOf("\\") if ( last_slash > last_backslash ) index = last_slash + 1; else index = last_backslash + 1; if ( index < path.length ) filename = path.substring(index, path.length); else filename = "index.html"; splitted_name = filename.split("."); name = splitted_name[0]; return name; } /* ** This functions retrieves the file name of the current page, ** excluding the extension. See get_pagename() for details. */ function pagename() { return get_pagename(location.pathname); } |
Klicka här för att testa denna typ av meny.