ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
512
512
EMPFEHLEN
-
17.11.05 18:28 #1
Hi zusammen,
ich habe im Internet ein für mich brauchbares DHTML Menü gefunden, allerdings kann ich es nicht in einen div-Tag setzen. Wie mir scheint baut es sich irgendwo Layer, aber das finde ich nicht. Ich hätte es lieber, dass ich keine absolute Position festlegen muss, sondern dies im HTML Code mache. Mein Problem ist, dass ich nicht so gut JavaScript kann, daher wär es gut, wenn mir da jemand weiter helfen könnte, wo ich das Script ändern müsste.
Gruß Radhad
Code :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
/* --- menu level scope settins structure --- note that this structure has changed its format since previous version. Now this structure has the same layout as Tigra Menu GOLD. Format description can be found in product documentation. */ var MENU_POS = [ { // item sizes 'height': 20, 'width': 120, // menu block offset from the origin: // for root level origin is upper left corner of the page // for other levels origin is upper left corner of parent item 'block_top': 99, 'block_left': 287, // offsets between items of the same level 'top': 0, 'left': 119, // time in milliseconds before menu is hidden after cursor has gone out // of any items 'hide_delay': 200, 'expd_delay': 200, 'css' : { 'outer': ['m0l0oout', 'm0l0oover'], 'inner': ['m0l0iout', 'm0l0iover'] } }, { 'height': 20, 'width': 150, 'block_top': 23, 'block_left': 0, 'top': 21, 'left': 0, 'css': { 'outer' : ['m0l1oout', 'm0l1oover'], 'inner' : ['m0l1iout', 'm0l1iover'] } }, { 'block_top': 5, 'block_left': 140, 'css': { 'outer': ['m0l2oout', 'm0l2oover'], 'inner': ['m0l1iout', 'm0l2iover'] } } ]
Code :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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
// Title: tigra menu // Description: See the demo at url // URL: http://www.softcomplex.com/products/tigra_menu/ // Version: 2.0 (commented source) // Date: 04-05-2003 (mm-dd-yyyy) // Tech. Support: http://www.softcomplex.com/forum/forumdisplay.php?fid=40 // Notes: This script is free. Visit official site for further details. // -------------------------------------------------------------------------------- // global collection containing all menus on current page var A_MENUS = []; // -------------------------------------------------------------------------------- // menu class function menu (a_items, a_tpl) { // browser check if (!document.body || !document.body.style) return; // store items structure this.a_config = a_items; // store template structure this.a_tpl = a_tpl; // get menu id this.n_id = A_MENUS.length; // declare collections this.a_index = []; this.a_children = []; // assigh methods and event handlers this.expand = menu_expand; this.collapse = menu_collapse; this.onclick = menu_onclick; this.onmouseout = menu_onmouseout; this.onmouseover = menu_onmouseover; this.onmousedown = menu_onmousedown; // default level scope description structure this.a_tpl_def = { 'block_top' : 16, 'block_left' : 16, 'top' : 20, 'left' : 4, 'width' : 120, 'height' : 22, 'hide_delay' : 0, 'expd_delay' : 0, 'css' : { 'inner' : '', 'outer' : '' } }; // assign methods and properties required to imulate parent item this.getprop = function (s_key) { return this.a_tpl_def[s_key]; }; this.o_root = this; this.n_depth = -1; this.n_x = 0; this.n_y = 0; // init items recursively for (n_order = 0; n_order < a_items.length; n_order++) new menu_item(this, n_order); // register self in global collection A_MENUS[this.n_id] = this; // make root level visible for (var n_order = 0; n_order < this.a_children.length; n_order++) this.a_children[n_order].e_oelement.style.visibility = 'visible'; } // -------------------------------------------------------------------------------- function menu_collapse (n_id) { // cancel item open delay clearTimeout(this.o_showtimer); // by default collapse to root level var n_tolevel = (n_id ? this.a_index[n_id].n_depth : 0); // hide all items over the level specified for (n_id = 0; n_id < this.a_index.length; n_id++) { var o_curritem = this.a_index[n_id]; if (o_curritem.n_depth > n_tolevel && o_curritem.b_visible) { o_curritem.e_oelement.style.visibility = 'hidden'; o_curritem.b_visible = false; } } // reset current item if mouse has gone out of items if (!n_id) this.o_current = null; } // -------------------------------------------------------------------------------- function menu_expand (n_id) { // expand only when mouse is over some menu item if (this.o_hidetimer) return; // lookup current item var o_item = this.a_index[n_id]; // close previously opened items if (this.o_current && this.o_current.n_depth >= o_item.n_depth) this.collapse(o_item.n_id); this.o_current = o_item; // exit if there are no children to open if (!o_item.a_children) return; // show direct child items for (var n_order = 0; n_order < o_item.a_children.length; n_order++) { var o_curritem = o_item.a_children[n_order]; o_curritem.e_oelement.style.visibility = 'visible'; o_curritem.b_visible = true; } } // -------------------------------------------------------------------------------- // // -------------------------------------------------------------------------------- function menu_onclick (n_id) { // don't go anywhere if item has no link defined return Boolean(this.a_index[n_id].a_config[1]); } // -------------------------------------------------------------------------------- function menu_onmouseout (n_id) { // lookup new item's object var o_item = this.a_index[n_id]; // apply rollout o_item.e_oelement.className = o_item.getstyle(0, 0); o_item.e_ielement.className = o_item.getstyle(1, 0); // update status line o_item.upstatus(7); // run mouseover timer this.o_hidetimer = setTimeout('A_MENUS['+ this.n_id +'].collapse();', o_item.getprop('hide_delay')); } // -------------------------------------------------------------------------------- function menu_onmouseover (n_id) { // cancel mouseoute menu close and item open delay clearTimeout(this.o_hidetimer); this.o_hidetimer = null; clearTimeout(this.o_showtimer); // lookup new item's object var o_item = this.a_index[n_id]; // update status line o_item.upstatus(); // apply rollover o_item.e_oelement.className = o_item.getstyle(0, 1); o_item.e_ielement.className = o_item.getstyle(1, 1); // if onclick open is set then no more actions required if (o_item.getprop('expd_delay') < 0) return; // run expand timer this.o_showtimer = setTimeout('A_MENUS['+ this.n_id +'].expand(' + n_id + ');', o_item.getprop('expd_delay')); } // -------------------------------------------------------------------------------- // called when mouse button is pressed on menu item // -------------------------------------------------------------------------------- function menu_onmousedown (n_id) { // lookup new item's object var o_item = this.a_index[n_id]; // apply mouse down style o_item.e_oelement.className = o_item.getstyle(0, 2); o_item.e_ielement.className = o_item.getstyle(1, 2); this.expand(n_id); // this.items[id].switch_style('onmousedown'); } // -------------------------------------------------------------------------------- // menu item Class function menu_item (o_parent, n_order) { // store parameters passed to the constructor this.n_depth = o_parent.n_depth + 1; this.a_config = o_parent.a_config[n_order + (this.n_depth ? 3 : 0)]; // return if required parameters are missing if (!this.a_config) return; // store info from parent item this.o_root = o_parent.o_root; this.o_parent = o_parent; this.n_order = n_order; // register in global and parent's collections this.n_id = this.o_root.a_index.length; this.o_root.a_index[this.n_id] = this; o_parent.a_children[n_order] = this; // calculate item's coordinates var o_root = this.o_root, a_tpl = this.o_root.a_tpl; // assign methods this.getprop = mitem_getprop; this.getstyle = mitem_getstyle; this.upstatus = mitem_upstatus; this.n_x = n_order ? o_parent.a_children[n_order - 1].n_x + this.getprop('left') : o_parent.n_x + this.getprop('block_left'); this.n_y = n_order ? o_parent.a_children[n_order - 1].n_y + this.getprop('top') : o_parent.n_y + this.getprop('block_top'); // generate item's HMTL document.write ( '<a id="e' + o_root.n_id + '_' + this.n_id +'o" class="' + this.getstyle(0, 0) + '" href="' + this.a_config[1] + '"' + (this.a_config[2] && this.a_config[2]['tw'] ? ' target="' + this.a_config[2]['tw'] + '"' : '') + ' style="position: absolute; top: ' + this.n_y + 'px; left: ' + this.n_x + 'px; width: ' + this.getprop('width') + 'px; height: ' + this.getprop('height') + 'px; visibility: hidden;' +' z-index: ' + this.n_depth + ';" ' + 'onclick="return A_MENUS[' + o_root.n_id + '].onclick(' + this.n_id + ');" onmouseout="A_MENUS[' + o_root.n_id + '].onmouseout(' + this.n_id + ');" onmouseover="A_MENUS[' + o_root.n_id + '].onmouseover(' + this.n_id + ');" onmousedown="A_MENUS[' + o_root.n_id + '].onmousedown(' + this.n_id + ');"><div id="e' + o_root.n_id + '_' + this.n_id +'i" class="' + this.getstyle(1, 0) + '">' + this.a_config[0] + "</div></a>\n" ); this.e_ielement = document.getElementById('e' + o_root.n_id + '_' + this.n_id + 'i'); this.e_oelement = document.getElementById('e' + o_root.n_id + '_' + this.n_id + 'o'); this.b_visible = !this.n_depth; // no more initialization if leaf if (this.a_config.length < 4) return; // node specific methods and properties this.a_children = []; // init downline recursively for (var n_order = 0; n_order < this.a_config.length - 3; n_order++) new menu_item(this, n_order); } // -------------------------------------------------------------------------------- // reads property from template file, inherits from parent level if not found // ------------------------------------------------------------------------------------------ function mitem_getprop (s_key) { // check if value is defined for current level var s_value = null, a_level = this.o_root.a_tpl[this.n_depth]; // return value if explicitly defined if (a_level) s_value = a_level[s_key]; // request recursively from parent levels if not defined return (s_value == null ? this.o_parent.getprop(s_key) : s_value); } // -------------------------------------------------------------------------------- // reads property from template file, inherits from parent level if not found // ------------------------------------------------------------------------------------------ function mitem_getstyle (n_pos, n_state) { var a_css = this.getprop('css'); var a_oclass = a_css[n_pos ? 'inner' : 'outer']; // same class for all states if (typeof(a_oclass) == 'string') return a_oclass; // inherit class from previous state if not explicitly defined for (var n_currst = n_state; n_currst >= 0; n_currst--) if (a_oclass[n_currst]) return a_oclass[n_currst]; } // ------------------------------------------------------------------------------------------ // updates status bar message of the browser // ------------------------------------------------------------------------------------------ function mitem_upstatus (b_clear) { window.setTimeout("window.status=unescape('" + (b_clear ? '' : (this.a_config[2] && this.a_config[2]['sb'] ? escape(this.a_config[2]['sb']) : escape(this.a_config[0]) + (this.a_config[1] ? ' ('+ escape(this.a_config[1]) + ')' : ''))) + "')", 10); } // -------------------------------------------------------------------------------- // that's all folks
-
Hallo....
nicht alles was einfach aussieht, ist auch einfach.
Das, was du möchtest, würde einen kompletten Umbau des Skripts erfordern.
Ich glaube, es ist sinnvoller, wenn du dir gleich ein Skript suchst, welches insgesamt deinen Anforderungen entspricht....Menues gibts nun wirklich wie Sand am Meer.... und vor allem auch welche, die die Seite auch noch ohne JS navigierbar lassen.
-
21.11.05 13:49 #3
Da ist ja das Problem. Es gibt viel zu viele davon. Ich habe mal dasselbe ausprobiert, wie es auf adrivo.com zu sehen ist. Allerdings wollte es erst garnicht funktionieren ... . Dann suche ich nochmal erneut bei Google nach DHTML etc.
Danke für deine Antwort.
Gruß Radhad
Ähnliche Themen
-
DHTML Menü (JS) mit CSS
Von monaco05 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 27.08.05, 21:53 -
Problem mit DHTML-Menü
Von Jan-Frederik Stieler im Forum CSSAntworten: 2Letzter Beitrag: 09.03.05, 16:25 -
Dhtml Menü fix
Von danielmueller im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 02.02.04, 13:54 -
DHTML Menü problem
Von ITBaer im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 01.08.03, 14:01 -
Menü erstellen mit Layern ohne DW
Von lordofscotland im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 29.03.02, 00:11





Zitieren
Login





