In order to create a proper working javascript based horizontal menu you need to have all of the necessary files. These files consist of :
/SpryAssets/SpryMenuBarHorizontal.css
/SpryAssets/SpryMenuBar.js
index.php
main.css
The first section of code is going to be the SpryMenuBarHorizontal.css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | @charset "UTF-8"; ul.MenuBarHorizontal { margin: 0; padding: 0; list-style-type: none; font-size: 100%; cursor: default; width: auto; } ul.MenuBarActive { z-index: 1000; } ul.MenuBarHorizontal li { margin: 0; padding: 0; list-style-type: none; font-size: 100%; position: relative; text-align: left; cursor: pointer; width: 8em; float: left; } ul.MenuBarHorizontal ul { margin: 0; padding: 0; list-style-type: none; font-size: 100%; z-index: 1020; cursor: default; width: 8.2em; position: absolute; left: -1000em; } ul.MenuBarHorizontal ul.MenuBarSubmenuVisible { left: auto; } ul.MenuBarHorizontal ul li { width: 8.2em; } ul.MenuBarHorizontal ul ul { position: absolute; margin: -5% 0 0 95%; } ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible { left: auto; top: 0; } ul.MenuBarHorizontal ul { border: 1px solid #CCC; } ul.MenuBarHorizontal a { display: block; cursor: pointer; background-color: #4b4b4b; padding: 0.2em 0.4em; color: #ffffff; text-decoration: none; } ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus { background-color: #4b4b4b; color: #FFF; } ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible { background-color: #333366; color: #ccccff; } ul.MenuBarHorizontal iframe { position: absolute; z-index: 1010; } @media screen, projection { ul.MenuBarHorizontal li.MenuBarItemIE { display: inline; f\loat: left; background: #4b4b4b; } } |
The second file, SpryMenuBar.js looks like this.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | var Spry; if(!Spry) { Spry = {}; } if(!Spry.Widget) { Spry.Widget = {}; } Spry.Widget.MenuBar = function(element, opts) { this.init(element, opts); }; Spry.Widget.MenuBar.prototype.init = function(element, opts) { this.element = this.getElement(element); this.currMenu = null; var isie = (typeof document.all != ‘undefined’ && typeof window.opera == ‘undefined’ && navigator.vendor != ‘KDE’); if(typeof document.getElementById == ‘undefined’ || (navigator.vendor == ‘Apple Computer, Inc.’ && typeof window.XMLHttpRequest == ‘undefined’) || (isie && typeof document.uniqueID == ‘undefined’)) { return; } if(opts) { for(var k in opts) { var rollover = new Image; rollover.src = opts[k]; } } if(this.element) { this.currMenu = this.element; var items = this.element.getElementsByTagName(‘li’); for(var i=0; i 0) { layers[0].parentNode.removeChild(layers[0]); } }; Spry.Widget.MenuBar.prototype.clearMenus = function(root) { var menus = root.getElementsByTagName(‘ul’); for(var i=0; i 0 ? submenus[0] : null); var hasSubMenu = false; if(menu) { this.addClassName(link, “MenuBarItemSubmenu”); hasSubMenu = true; } if(!isie) { listitem.contains = function(testNode) { if(testNode == null) { return false; } if(testNode == this) { return true; } else { return this.contains(testNode.parentNode); } }; } var self = this; this.addEventListener(listitem, ‘mouseover’, function(e) { if(self.bubbledTextEvent()) { return; } clearTimeout(closetime); if(self.currMenu == listitem) { self.currMenu = null; } self.addClassName(link, hasSubMenu ? “MenuBarItemSubmenuHover” : “MenuBarItemHover”); if(menu && !self.hasClassName(menu, “MenuBarSubmenuVisible”)) { opentime = window.setTimeout(function(){self.showSubmenu(menu);}, 250); } }, false); this.addEventListener(listitem, ‘mouseout’, function(e) { if(self.bubbledTextEvent()) { return; } var related = (typeof e.relatedTarget != ‘undefined’ ? e.relatedTarget : e.toElement); if(!listitem.contains(related)) { clearTimeout(opentime); self.currMenu = listitem; self.removeClassName(link, hasSubMenu ? “MenuBarItemSubmenuHover” : “MenuBarItemHover”); if(menu) { closetime = window.setTimeout(function(){self.hideSubmenu(menu);}, 600); } } }, false); }; |
Now you need your index.php. This is where the menu content will be.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> <title>Untitled Document</title> <link href=”main.css” rel=”stylesheet” type=”text/css” /> <script src=”SpryAssets/SpryMenuBar.js” type=”text/javascript”></script> <link href=”SpryAssets/SpryMenuBarHorizontal.css” rel=”stylesheet” type=”text/css” /> </head> <body> <div id=”container”> <div id=”header”> <h1>Header</h1> <ul id=”MenuBar1″> <li> <div align=”center”><a href=”#”>simple</a></div> </li> <li> <div align=”center”><a href=”#”>Smart</a></div> </li> <li> <div align=”center”><a href=”#”>Tutorials</a> <ul> <li><a href=”#”>Photoshop</a></li> <li><a href=”#”>Illustrator</a></li> <li><a href=”#”>Flash</a></li> <li><a href=”#”>Dreamweaver</a></li> </ul> </div> </li> </ul> <!– end #header –></div> <div id=”mainContent”> <h1> Main Content </h1> <!– end #mainContent –></div> <div id=”footer”> <p>Footer</p> <!– end #footer –></div> <!– end #container –></div> <script type=”text/javascript”> <!– var MenuBar1 = new Spry.Widget.MenuBar(“MenuBar1″); //–> </script> </body> </html> |
The last file that we need is the main.css file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | @charset "utf-8"; body { font: 100% Verdana, Arial, Helvetica, sans-serif; background: #666666; margin: 0; padding: 0; text-align: center; color: #000000; } .oneColElsCtrHdr #container { width: 46em; background: #FFFFFF; margin: 0 auto; border: 1px solid #000000; text-align: left; } .oneColElsCtrHdr #header { background: #4b4b4b; color: #ffffff; padding: 0 10px 0 20px; } .oneColElsCtrHdr #header h1 { margin: 0; padding: 10px 0; } .oneColElsCtrHdr #mainContent { padding: 0 20px; background: #FFFFFF; margin-top: 50px; } .oneColElsCtrHdr #footer { padding: 0 10px; background:#DDDDDD; } .oneColElsCtrHdr #footer p { margin: 0; padding: 10px 0; } |



