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.