Wprowadzenie:
W tym ćwiczeniu omówione zostaną sposoby wykorzystania arkuszy stylów CSS do budowy menu nawigacyjnego na stronie internetowej.
- zadania do wykonania
Menu nawigacyjne buduje się w oparciu o listy wyliczeniowe.
Przykłady menu:
- menu pionowe
- menu pionowe rozwijane
- menu poziome
- menu poziome rozwijane
Menu pionowe
Budowę menu zaczyna się od przygotowania listy łączy do konkretnych podstron:
- <ul>
- <li><a href="#">Powrót</a></li>
- <li><a href="#">Drugi link</a></li>
- <li><a href="#">Trzeci link</a></li>
- <li><a href="#">Czwarty link</a></li>
- <li><a href="#">Piąty link</a></li>
- </ul>
Tak to wygląda na stronie (na wszystkich stronach z przykładami jest kolor tła: #dadada;):
menu pionowe - krok pierwszy
W następnym kroku należy, w arkuszu stylów, ustalić: wyświetlanie w bloku, marginesy i marginesy wewnętrzne, należy usunąć znaki wypunktowania i nadać kolory tekstowi jako linkowi aktywnemu i inny kolor tekstowi wskazanemu. Można, ewentualnie usunąć podkreślenie tekstu.
- ul
- {list-style: none;
- margin: 5px;
- padding: 0px;
- }
- ul a:link, ul a:visited
- {display: block;
- color: #005500;
- text-decoration: none;
- }
- ul a:hover
- {color: #ff00ff;
- text-decoration: underline;
- }
Tak to wygląda po pierwszych zmianach:
menu pionowe - krok drugi
Kolejnym zadaniem w formatowaniu jest nadanie odpowiedniego wyglądu łączom. W tym przykładzie łącza będą miały formę przycisków. Wobec tego trzeba nadać odpowiednią szerokość tych przycisków, marginesy wewnętrzne i obramowanie: inne dla łącza aktywnego i inne dla wskazanego. Dzięki wyświetlaniu w bloku cały przycisk będzie aktywny.
Dopisane właściwości są pogrubione.
- ul
- {list-style: none;
- margin: 5px;
- padding: 0px;
- display: block;
- width: 150px;
- }
- ul li
- {display: block;
- list-style: none;
- margin: 0px;
- padding: 0px;
- }
- ul a:link, ul a:visited
- {display: block;
- color: #005500;
- text-decoration: none;
- border: 2px outset #cccccc;
- padding: 5px;
- width: 120px;
- }
- ul a:hover
- {color: #ff00ff;
- text-decoration: underline;
- border-style: inset;
- padding: 7px 3px 3px 7px;
- }
Tak to wygląda po kolejnych zmianach:
menu pionowe - krok trzeci
W ostatnim kroku można jeszcze zmienić kolor tła przycisku - inny dla łącza aktywnego i inny dla wskazanego.
- ul
- {list-style: none;
- margin: 5px;
- padding: 0px;
- display: block;
- width: 150px;
- }
- ul li
- {display: block;
- list-style: none;
- margin: 0px;
- padding: 0px;
- }
- ul a:link, ul a:visited
- {display: block;
- color: #005500;
- text-decoration: none;
- border: 2px outset #cccccc;
- padding: 5px;
- width: 120px;
- background-color: #00ffff;
- }
- ul a:hover
- {color: #ff00ff;
- text-decoration: underline;
- border-style: inset;
- padding: 7px 3px 3px 7px;
- background-color: #0000ff;
- }
Tak wygląda gotowe menu pionowe:
menu pionowe - krok czwarty
do góry
Menu pionowe rozwijane
Przykład z menu pionowym rozwijanym również należy zacząć od przygotowania listy wyliczeniowej, tym razem zagnieżdżonej, której elementy będą łączami do podstron:
- <ul class="level1">
- <li class="submenu"><a href="#">Powrót</a>
- <ul class="level2">
- <li><a href="#">pierwszy a</a></li>
- <li><a href="#">pierwszy b</a></li>
- <li><a href="#">pierwszy c</a></li>
- <li><a href="#">pierwszy d</a></li>
- <li><a href="#">pierwszy e</a></li>
- </ul>
- </li>
- <li class="submenu"><a href="#">Drugi link</a>
- <ul class="level2">
- <li><a href="#">drugi a</a></li>
- <li><a href="#">drugi b</a></li>
- <li><a href="#">drugi c</a></li>
- <li><a href="#">drugi d</a></li>
- <li><a href="#">drugi e</a></li>
- </ul>
- </li>
- <li class="submenu"><a href="#">Trzeci link</a>
- <ul class="level2">
- <li><a href="#">trzeci a</a></li>
- <li class="submenu"><a href="#">trzeci b</a>
- <ul class="level3">
- <li><a href="#">trzeci b-1</a></li>
- <li><a href="#">trzeci b-2</a></li>
- <li><a href="#">trzeci b-3</a></li>
- <li><a href="#">trzeci b-4</a></li>
- <li><a href="#">trzeci b-5</a></li>
- </ul>
- </li>
- <li><a href="#">trzeci c</a></li>
- <li class="submenu"><a href="#">trzeci d</a>
- <ul class="level3">
- <li><a href="#">trzeci d-1</a></li>
- <li><a href="#">trzeci d-2</a></li>
- <li><a href="#">trzeci d-3</a></li>
- <li><a href="#">trzeci d-4</a></li>
- <li><a href="#">trzeci d-5</a></li>
- </ul>
- </li>
- <li><a href="#">trzeci e</a></li>
- </ul>
- </li>
- <li class="submenu"><a href="#">Czwarty link</a>
- <ul class="level2">
- <li><a href="#">czwarty a</a></li>
- <li><a href="#">czwarty b</a></li>
- <li><a href="#">czwarty c</a></li>
- <li><a href="#">czwarty d</a></li>
- <li><a href="#">czwarty e</a></li>
- </ul>
- </li>
- <li class="submenu"><a href="#">Piąty link</a>
- <ul class="level2">
- <li><a href="#">piąty a</a></li>
- <li><a href="#">piąty b</a></li>
- <li><a href="#">piąty c</a></li>
- <li><a href="#">piąty d</a></li>
- <li><a href="#">piąty e</a></li>
- </ul>
- </li>
- </ul>
Tak wygląda ta lista wyliczeniowa zagnieżdżona:
menu pionowe rozwijane - lista wyliczeniowa
W tym przykładzie, ze względu na jego dość wysoki stopień skomplikowania, podaję w całości wszystkie reguły arkusza stylów formatującego menu pionowe rozwijane:
- ul
- {float: left;
- width: 140px;
- background: #00ffff;
- margin: -1px 0 0 -1px;
- }
- ul
- {margin: 0;
- padding: 0;
- width: 140px;
- background-color: #00ffff;
- border: 1px solid #aaaaaa;
- }
- li
- {position: relative;
- list-style: none;
- margin: 0;
- border-bottom: 1px solid #cccccc;
- }
- ul ul
- {position: absolute;
- top: 0;
- left: 140px;
- display: none;
- }
- li.submenu
- {background: url(../grafiki/submenu.gif) 95% 50% no-repeat;
- }
- li a:link, li a:visited
- {display: block;
- padding: 5px;
- text-decoration: none;
- width: 140px;
- color: #005500;
- }
- ul a:link, ul a:visited
- {width: auto;
- color: #005500;
- }
- li a:hover
- {background-color: #0000ff;
- color: #ff00ff;
- text-decoration: underline;
- }
- li.submenu a:hover
- {background-color: #0000ff;
- color: #ff00ff;
- }
- ul.level1 li.submenu a:hover ul.level2
- {display: block;
- color: #ff00ff;
- }
- ul.level2 li.submenu a:hover ul.level3
- {display: block;
- color: #ff00ff;
- }
źródło skryptu: Eric A. Meyer, CSS według Erica Meyera. Kolejna odsłona
Tak wygląda gotowe menu pionowe rozwijane:
menu pionowe rozwijane
do góry
Menu poziome
Budowę menu zaczyna się od przygotowania listy łączy do konkretnych podstron - patrz tutaj.
Tak to wygląda na stronie (na wszystkich stronach z przykładami jest kolor tła: #dadada;):
menu poziome - krok pierwszy
Formatowanie należy zacząć od ustawienia listy w jednej linii. Można to uzyskać na dwa sposoby: ustalając wyświetlanie w linii lub blokowe. W poniższym przykładzie zastosowano drugi sposób w połączeniu z wyrównaniem w poziomie do lewej. Ponadto usunięto znaki wypunktowania, podkreślenie tekstu i nadano kolor czcionce - inny łącza aktywnego i inny wskazanego.
- ul, ul li
- {display: block;
- list-style: none;
- margin: 0;
- padding: 0;
- }
- ul li
- {float: left;
- }
- ul a:link, ul a:visited
- {text-decoration: none;
- display: block;
- text-align: center;
- color: #005500;
- }
- ul a:hover
- {color: #ff00ff;
- text-decoration: underline;
- }
źródło: www.kurshtml.boo.pl
Tak wygląda menu poziome po formatowaniu:
menu poziome - krok drugi
Następnie łączom należy nadać formę przycisków:
- ul, ul li
- {display: block;
- list-style: none;
- margin: 0;
- padding: 0;
- }
- ul li
- {float: left;
- }
- ul a:link, ul a:visited
- {text-decoration: none;
- display: block;
- text-align: center;
- color: #005500;
- width: 120px;
- border: 2px outset #cccccc;
- padding: 5px;
- }
- ul a:hover
- {color: #ff00ff;
- text-decoration: underline;
- border-style: inset;
- padding: 7px 3px 3px 7px;
- }
źródło: www.kurshtml.boo.pl
Tak wygląda menu poziome po kolejnych zmianach:
menu poziome - krok trzeci
W ostatnim kroku można jeszcze zmienić kolor tła przycisku - inny dla łącza aktywnego i inny dla wskazanego.
- ul, ul li
- {display: block;
- list-style: none;
- margin: 0;
- padding: 0;
- }
- ul li
- {float: left;
- }
- ul a:link, ul a:visited
- {text-decoration: none;
- display: block;
- text-align: center;
- color: #005500;
- width: 120px;
- border: 2px outset #cccccc;
- padding: 5px;
- background-color: #00ffff;
- }
- ul a:hover
- {color: #ff00ff;
- text-decoration: underline;
- border-style: inset;
- padding: 7px 3px 3px 7px;
- background-color: #0000ff;
- }
źródło: www.kurshtml.boo.pl
Tak wygląda gotowe menu poziome:
menu poziome - krok czwarty
do góry
Menu poziome rozwijane
Przykład z menu poziomym rozwijanym również należy zacząć od przygotowania listy wyliczeniowej, tym razem zagnieżdżonej, której elementy będą łączami do podstron. Lista jest ta sama jak w przykładzie z menu pionowym rozwijanym - tutaj. Jedyna zmiana polega na tym, że cała lista ujęta jest w znaczniku <div>...</div>.
Tak wygląda ta lista wyliczeniowa zagnieżdżona:
menu poziome rozwijane - lista wyliczeniowa
W tym przykładzie, ze względu na jego dość wysoki stopień skomplikowania, podaję w całości wszystkie reguły arkusza stylów formatującego menu poziome rozwijane:
- div
- {float: left;
- border: 1px solid #aaaaaa;
- background: #00ffff;
- margin: 1px 0 0 0;
- width: 602px;
- }
- div ul
- {margin: 0;
- padding: 0;
- border: 1px solid #cccccc;
- border-width: 0 1px;
- background-color: #00ffff;
- }
- div li
- {position: relative;
- list-style: none;
- margin: 0;
- float: left;
- width: 120px;
- line-height: 1em;
- }
- div ul ul
- {position: absolute;
- width: 120px;
- display: none;
- }
- div ul ul li
- {border-bottom: 1px solid #cccccc;
- }
- div li.submenu
- {background: url(../grafiki/dropmenu.gif) 95% 50% no-repeat;
- }
- div li.submenu li.submenu
- {background: url(../grafiki/submenu.gif) 95% 50% no-repeat;
- }
- div li a:link, div li a:visited
- {display: block;
- padding: 0.25em 0 0.25em 0.5em;
- text-decoration: none;
- width: 120px;
- color: #005500;
- }
- div>ul a:link, div>ul a:visited
- {width: auto;
- color: #005500;
- }
- div li a:hover
- {background-color: #0000ff;
- color: #ff00ff;
- text-decoration: underline;
- }
- div li.submenu a:hover
- {background-color: #0000ff;
- color: #ff00ff;
- }
- div ul.level1 li.submenu a:hover ul.level2
- {display: block;
- color: #ff00ff;
- }
- div ul.level2 li.submenu a:hover ul.level3
- {display: block;
- color: #ff00ff;
- }
- div ul.level2
- {top: 1.5em;
- left: -1px;
- }
- div ul.level3
- {top: -1px;
- left: 120px;
- border-top: 1px solid #cccccc;
- }
źródło skryptu: Eric A. Meyer, CSS według Erica Meyera. Kolejna odsłona
Tak wygląda gotowe menu poziome rozwijane:
menu poziome rozwijane
do góry
Zadania do wykonania:
W tym ćwiczeniu należy zastosować własności CSS, które pozwolą zbudować menu pionowe i poziome. Zadanie polega na sformatowaniu jednego pliku HTML jednym plikiem CSS i drugiego pliku HTML drugim plikiem CSS. W pierwszym pliku HTML należy uzyskać menu pionowe, a w drugim menu poziome.
1. Należy zacząć od przygotowania struktury folderów i plików:
foldery:
- cw_18 - główny
- pliki - zawarty w głównym
- style - zawarty w głównym
pliki:
- plik_pion.html - w folderze pliki
- plik_poziom.html - w folderze pliki
- style_pion.css - w folderze style
- style_poziom.css - w folderze style
2. W obu plikach HTML należy umieścić taką samą treść:
zawartość pliku HTML:
- szablon HTML 4.01 Transitional
- w sekcji <head>...</head>:
- łącze do arkusza stylów - patrz tutaj
- odpowiednio dla plików:
- plik_pion.html połączyć z style_pion.css
- plik_poziom.html połączyć z style_poziom.css
- w znaczniku <title>...</title> nazwa pliku
- w sekcji <body>...</body>:
- listę wyliczeniową z łączami:
- <ul>
- <li id="home"><a href="#">Home</a></li>
- <li><a href="#">Drugi link</a></li>
- <li><a href="#">Trzeci link</a></li>
- <li><a href="#">Czwarty link</a></li>
- <li><a href="#">Piąty link</a></li>
- </ul>
Po wpisaniu całej zawartości oba pliki powinny wyglądać tak - bez żadnego formatowania:
plik_pion.html
plik_poziom.html
3. W pliku CSS należy przygotować reguły formatujące oba pliki, tak by uzyskać menu pionowe i poziome.
zawartość pliku CSS style_pion.css:
- kolor tła całej strony:
- body
- {background-color: #dadada;
- }
- reguły dla całej listy:
- ul
- {width: 250px;
- display: block;
- list-style: none;
- margin: 40px;
- padding: 0px;
- float: right;
- }
- reguły dla elementów potomnych listy - wierszy:
- ul li
- {display: block;
- list-style: none;
- margin: 0px;
- padding: 0px;
- text-align: right;
- }
- reguły dla łączy:
- li a:link, li a:visited
- {display: block;
- padding: 8px;
- width: 250px;
- color: #ffff00;
- background-color: #000080;
- border-top: 1px dotted #008000;
- text-decoration: none;
- font-family: 'Trebuchet MS';
- font-weight: bold;
- }
- reguły dla łączy wskazanych:
- li a:hover
- {color: #000080;
- background-color: #ffff00;
- text-decoration: underline;
- }
- reguły dla pierwszego łącza:
- li#home a:link, li#home a:visited
- {color: #000080;
- background-color: #ffff00;
- border-top: none;
- text-decoration: underline;
- }
- reguły dla pierwszego łącza wskazanego:
- li#home a:hover
- {color: #ffff00;
- background-color: #000080;
- border-top: none;
- text-decoration: none;
- }
Tak powinno wyglądać menu pionowe w pliku plik_pion.html:
plik_pion.html
zawartość pliku CSS style_poziom.css:
- kolor tła całej strony:
- body
- {background-color: #dadada;
- }
- reguły dla całej listy:
- ul
- {height: 40px;
- margin: 40px;
- padding: 0;
- float: right;
- border-bottom: 3px double #008000;
- }
- reguły dla elementów potomnych listy - wierszy:
- ul li
- {display: inline;
- padding: 3px 25px;
- border-left: 3px double #008000;
- }
- reguły dla łączy:
- li a:link, li a:visited
- {color: #ff0000;
- text-decoration: none;
- font-family: 'Trebuchet MS';
- font-weight: bold;
- }
- reguły dla łączy wskazanych:
- li a:hover
- {color: #000000;
- text-decoration: underline;
- }
- reguła dla pierwszego wiersza:
- li#home
- {border-left: none;
- }
- reguły dla pierwszego łącza:
- li#home a:link, li#home a:visited
- {color: #000000;
- text-decoration: underline;
- }
- reguły dla pierwszego łącza wskazanego:
- li#home a:hover
- {color: #ff0000;
- text-decoration: none;
- }
Tak powinno wyglądać menu pionowe w pliku plik_poziom.html:
plik_poziom.html
Tak wyglądają oba pliki ze swoimi menu:
menu pionowe - plik_pion.html
menu poziome - plik_poziom.html
Oceniany będzie folder cw_18 z dwoma podfolderami: pliki i style, w których zawarte będą odpowiednio pliki: w folderze pliki: plik_pion.html i plik_poziom.html, w folderze style: style_pion.css i style_poziom.css.
Pliki HTML powinny być sformatowane zgodnie z poleceniami za pomocą zewnętrznych arkuszy stylów. Efektem formatowania winny być dwa menu: pionowe i poziome.
Strona Główna
do góry
Przy przygotowywaniu powyższego ćwiczenia wielką pomocą służył kurs HTML-a - w wersji online: http://www.kurshtml.boo.pl, jak również w wersji offline do pobrania z tej samej strony.