Фон для меню
Для начала создадим background, я конечно не мастер PhotoShop’a, но вот что у меня получилось за пару минут:

Графические кнопочки
Создаем изображения которые у нас будут использовать как ссылки в меню. Для этого воспользуемся PhotoShop’ом:
- Создаем новый файл размером этак 144×58px. (размер ссылки для первого элемента в меню)
- Наполняем графическим содержимым сей пункт меню (у меня это лишь надпись выполненная забавным шрифтом):
- Далее увеличим размер полотна (canvas size) в два раза:
-
И дорисуем внешний вид элемента меню для реализации события hover
Как сия конструкция будет работать? Да очень просто – ссылке мы явно
указываем размер 144×58px, а но событие mouseover перемещаем фоновое
изображение вверх:
- Создадим новый файл с произвольным размером и текстом – это будет наша подсказка к ссылке
- Повторим все предыдущие пункты для создания всех пунктов меню, в
результате анаших манипуляций у нас должен получиться вот такой набор
изображений:
HTML код
Закончили строить из себя дизайнеров, пора начинать кодить – создадим не нумерованный список – <ul>:
- элементу <ul> присвоеим id=”menu”
- каждой ссылке <a> присвоим уникальное имя класса
- Внутрь тэга <a> закинем пустой тэг <span> (понадобиться для реализации подсказок к ссылкам)
1.<ul id="menu">
2.<li><a href="#" class="home">Home <span></span></a></li>
3.<li><a href="#" class="about">About <span></span></a></li>
4.<li><a href="#" class="rss">RSS <span></span></a></li>
5.</ul>
CSS код
#menu
Для начала убираем padding и margin у меню, list-style выставляем в
none, position указываем как relative . Указываем высоту и ширину меню
(см. размеры menu-bg.jpg). Добавляем фоновое изображение.
01.#menu {
02. list-style: none;
03. padding: 0;
04. margin: 0;
05. width: 774px;
06. height: 210px;
07. background: url(images/menu-bg.jpg) no-repeat;
08. position: relative;
09.}
#menu span
Для элементов span параметр display выставляем в none (по умолчанию не
будут отображаться). Так же выставляем position как absolute.
1.#menu span {
2. display: none;
3. position: absolute;
4.}
#menu a
Для ссылок нам необходимо спрятать текст, для этого параметру
text-indent присваиваем негативное значение (-900%), и текст будет
скрыт.
1.#menu a {
2. display: block;
3. text-indent: -900%;
4. position: absolute;
5. outline: none;
6.}
#menu a:hover
Теперь мы хотим сдвинуть картинку на линке по событию mouseover, для этого добавим в CSS следующий код:
1.#menu a:hover {
2. background-position: left bottom;
3.}
#menu a:hover span
Так же по событию mouseover необходимо отобразить подсказку
1.#menu a:hover span {
2. display: block;
3.}
#menu .home
Теперь нам необходимо правильно расставить элементы меню. Для начала
укажем размер элемента и фоновое изображение, а затем займемся
позиционированием, будем изменять параметры left и top пока не
почувствуем морального удовлетворения от внешнего вида меню:
1.#menu .home {
2. width: 144px;
3. height: 58px;
4. background: url(images/home.gif) no-repeat;
5. left: 96px;
6. top: 96px;
7.}
#menu .home span
Теперь проведем подобную операцию для всплывающей подсказки
1.#menu .home span {
2. width: 86px;
3. height: 14px;
4. background: url(images/home-over.gif) no-repeat;
5. left: 28px;
6. top: -20px;
7.}
#menu .about
Копируем всё что мы сделали для элемента .home и переименовываем в .about. Подгоняем размер и расположение, так же заменяем фон.
01.#menu .about {
02. width: 131px;
03. height: 51px;
04. background: url(images/about.gif) no-repeat;
05. left: 338px;
06. top: 97px;
07.}
08.#menu .about span {
09. width: 40px;
10. height: 12px;
11. background: url(images/about-over.gif) no-repeat;
12. left: 44px;
13. top: 54px;
14.}
#menu .rss
Повторим для .rss
01.#menu .rss {
02. width: 112px;
03. height: 47px;
04. background: url(images/rss.gif) no-repeat;
05. left: 588px;
06. top: 94px;
07.}
08.#menu .rss span {
09. width: 92px;
10. height: 20px;
11. background: url(images/rss-over.gif) no-repeat;
12. left: 26px;
13. top: -20px;
14.}
Всё в одном
01.#menu {
02. list-style: none;
03. padding: 0;
04. margin: 0;
05. width: 774px;
06. height: 210px;
07. background: url(images/menu-bg.jpg) no-repeat;
08. position: relative;
09.}
10.#menu span {
11. display: none;
12. position: absolute;
13.}
14.#menu a {
15. display: block;
16. text-indent: -900%;
17. position: absolute;
18. outline: none;
19.}
20.#menu a:hover {
21. background-position: left bottom;
22.}
23.#menu a:hover span {
24. display: block;
25.}
26.#menu .home {
27. width: 144px;
28. height: 58px;
29. background: url(images/home.gif) no-repeat;
30. left: 96px;
31. top: 73px;
32.}
33.#menu .home span {
34. width: 86px;
35. height: 14px;
36. background: url(images/home-over.gif) no-repeat;
37. left: 28px;
38. top: -20px;
39.}
40.#menu .about {
41. width: 131px;
42. height: 51px;
43. background: url(images/about.gif) no-repeat;
44. left: 338px;
45. top: 97px;
46.}
47.#menu .about span {
48. width: 40px;
49. height: 12px;
50. background: url(images/about-over.gif) no-repeat;
51. left: 44px;
52. top: 54px;
53.}
54.#menu .rss {
55. width: 112px;
56. height: 47px;
57. background: url(images/rss.gif) no-repeat;
58. left: 588px;
59. top: 94px;
60.}
61.#menu .rss span {
62. width: 92px;
63. height: 20px;
64. background: url(images/rss-over.gif) no-repeat;
65. left: 26px;
66. top: -20px;
67.}
Это всё, протестировать меню можете тут, а скачать пример тут.
Источник: http://anton.shevchuk.name/html-and-css/web20-css-menu/ |