Wygląd menu rozwijanego, otwieranego, wysuwanego
Jeżeli nie odpowiada nam podstawowy wygląd menu, można go zmienić wykorzystując polecenia CSS. W tym celu w pliku menu.css należy wkleić np.:
#menu0 {
width: 200px;
margin: 10px;
padding: 0;
}
#menu0 dt {
background-color: #888;
color: #fff;
font-weight: bold;
text-align: center;
cursor: pointer;
margin: 10px 0 0 0;
padding: 2px;
}
#menu0 dd {
background-color: #eee;
color: #000;
border-width: 0 1px 1px 1px;
border-style: solid;
border-color: #888;
margin: 0;
padding: 1px 5px;
}
#menu0 dd.active {
font-weight: bold;
}W wyróżnionych miejscach wpisano zdefiniowany uprzednio identyfikator menu. Teraz w nagłówku dokumentu HTML (<head>...</head>), na którym wstawione jest menu, wystarczy wstawić odwołanie do utworzonego właśnie zewnętrznego arkusza stylów:
<link rel="stylesheet" href="menu.css">
Przykład
Aby uzyskać następujące wielopoziomowe menu otwierane, imitujące tradycyjne menu aplikacji:
należy użyć kodu HTML:
<dl id="menu0"> <dt>Kurs</dt> <dd> <dl> <dt><a href="...">HTML</a></dt> <dd> <dl> <dt><a href="...">Dla zielonych</a></dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> </dd> <dd> <dl> <dt><a href="...">BODY i META</a></dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> </dd> <dd> <dl> <dt><a href="...">Tekst</a></dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> </dd> </dl> </dd> <dd> <dl> <dt><a href="...">CSS</a></dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> </dd> </dl> <script> new Menu('menu0', 'menu0', true, false, 0, 0, -1, -1, true); </script>
oraz dołączyć następujący arkusz CSS:
#menu0, #menu0 dl {
font-size: 12px;
position: absolute;
width: 150px;
margin: 0;
padding: 0;
border-width: 1px;
border-style: solid;
border-color: #eee #aaa #aaa #eee;
}
#menu0 dt {
cursor: pointer;
margin: 0;
padding: 0;
background-color: #888;
color: #fff;
text-align: center;
font-weight: bold;
font-size: 14px;
border-width: 1px;
border-style: solid;
border-color: #aaa #666 #666 #aaa;
padding: 4px 5px;
}
#menu0 dl dt {
background-color: #ccc;
color: #000;
text-align: left;
font-weight: normal;
font-size: 12px;
border: 0;
padding: 0;
}
#menu0 dd {
background-color: #ccc;
color: #000;
margin: 0;
padding: 0;
width: 150px;
height: 22px;
}
#menu0 dd.active {
font-weight: bold;
}
#menu0 dt a {
background: url("submenu.gif") no-repeat 140px 8px;
padding-right: 20px;
}
#menu0 a:link, #menu0 a:visited {
display: block;
color: #000;
text-decoration: none;
padding: 4px 5px;
}
#menu0 a:hover {
color: #fff;
background-color: #008;
}
#menu0 dl {
position: absolute;
border: 0;
}
#menu0 dl dd {
position: relative;
left: 151px;
bottom: 22px;
border-left: 1px solid #eee;
border-right: 1px solid #aaa;
}Aby ustawić kolejne menu otwierane obok siebie, należy wstawić kilka osobnych bloków <dl>...</dl>, a następnie wypozycjonować je w odpowiednim miejscu względem siebie:
Kod HTML:
<div class="menu"> <dl id="menu1"> <dt>HTML</dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> <script> new Menu('menu1', 'position: absolute', true, true, -1, -1, -1, -1, true); </script> <dl id="menu2"> <dt>CSS</dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> <script> new Menu('menu2', 'position: absolute; left: 150px', true, true, -1, -1, -1, -1, true); </script> <dl id="menu3"> <dt>Skrypty</dt> <dd><a href="...">...</a></dd> <dd><a href="...">...</a></dd> </dl> <script> new Menu('menu3', 'position: absolute; left: 300px', true, true, -1, -1, -1, -1, true); </script> </div>
Arkusz CSS:
.menu {
position: relative;
}
.menu dl {
width: 150px;
margin: 0;
padding: 0;
border-width: 1px;
border-style: solid;
border-color: #aaa #666 #666 #aaa;
}
.menu dt {
margin: 0;
padding: 2px 5px;
cursor: pointer;
background-color: #888;
color: #fff;
font-weight: bold;
text-align: center;
}
.menu dd {
margin: 0;
padding: 2px 5px;
background-color: #ccc;
color: #000;
}Aby połączyć dwa ostatnie przykłady, wystarczy wstawić wszystkie menu w jednym wspólnym bloku, który musi mieć nadaną pozycję relatywną, a kolejne menu powinny być osadzane następująco:
<div class="menu"> <dl id="menu0">...</dl> <script> new Menu('menu0', 'menu0', true, false, 0, 0, -1, -1, true); </script> <dl id="menu1">...</dl> <script> new Menu('menu1', 'menu0', true, false, 0, 0, -1, -1, true); </script> <dl id="menu2">...</dl> <script> new Menu('menu2', 'menu0', true, false, 0, 0, -1, -1, true); </script> </div>
Arkusz stylów będzie taki sam, jak w przykładzie wielopoziomowego menu otwieranego (przedostatni powyżej), z niewielkim dodatkiem:
.menu {
position: relative;
}
#menu1 {
left: 150px;
}
#menu2 {
left: 300px;
}