PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Menü richtig positionieren
Beitrag
<blockquote data-quote="daimonion" data-source="post: 1307592" data-attributes="member: 188756"><p>Ich bin gerade dabei für eine Bekannte eine Internetseite zu gestalten und hänge ein wenig an der korrekten Positionierung des Menüs.</p><p></p><p>Hier erst mal der derzeitige Status der Seite: <a href="http://www.kirsch-konditor.de" target="_blank">Meisterkonditorei Kirsch</a></p><p></p><p>Als Menüvorbild hab ich mir das Menü von <a href="http://www.spruengli.ch" target="_blank">Spruengli.ch.de</a> genommen.</p><p></p><p>Vielleicht erst mal ein wenig Code.</p><p>Aufgerufen wird das Menü mittels mouseOver Event:</p><p></p><p>[code]<div id="menupoint1" class="menupoint" onMouseOver="showMenu('menupoint1','Menu1')">Torten</div>[/code]</p><p></p><p>Die Funktion showMenu sieht derzeit so aus:</p><p></p><p>[code]function showMenu(mpoint, menu) {</p><p> var menupoint = document.getElementById(mpoint);</p><p> //neue Elemente generieren</p><p> var MenuBox = document.createElement("div");</p><p> MenuBox.id = "Menubox1";</p><p> </p><p> for (i = 0 ; i < Menu1.length ; i++) {</p><p> MenuBox.appendChild(document.createTextNode(Menu1[i]));</p><p> MenuBox.appendChild(document.createElement("br"));</p><p> }</p><p> </p><p> //Eigenschaften vergeben</p><p> MenuBox.style.width = 150 + "px";</p><p> MenuBox.style.backgroundColor = "#4a2910";</p><p> MenuBox.style.color = "#FFFFFF";</p><p> </p><p> //menubox positionieren</p><p> MenuBox.style.position = "absolute";</p><p> </p><p> MenuBox.style.left = menupoint.style.left;</p><p> MenuBox.style.top = menupoint.style.top;</p><p> </p><p> //Event für das MouseOut Ereignis hinzufügen</p><p> if (MenuBox.addEventListener) {</p><p> MenuBox.addEventListener("mouseout", hideMenus, false);</p><p> } else if (MenuBox.attachEvent) {</p><p> MenuBox.attachEvent("onmouseout", hideMenus);</p><p> }</p><p> </p><p> </p><p> //Objekt im Dom einfügen</p><p> menupoint.parentNode.insertBefore(MenuBox,menupoint.nextSibling);</p><p> </p><p>};</p><p></p><p>function hideMenus() {</p><p> var Menubox = document.getElementById("Menubox1");</p><p> Menubox.parentNode.removeChild(Menubox);</p><p> </p><p>};[/code]</p><p></p><p>Die Funktion ist lange noch nicht fertig, daher kann es sein, dass die ein oder andere Codezeile noch nicht sauber implementiert ist. </p><p></p><p>Momentan liefert dieses Stück Code folgendes Ergebnis in eigentlich allen Browsern:</p><p></p><p></p><p></p><p>Nun könnte man meinen, dass die beiden Zeilen</p><p></p><p>[code] MenuBox.style.left = menupoint.style.left;</p><p> MenuBox.style.top = menupoint.style.top;[/code]</p><p></p><p>für dieses Ergebnis verantwortlich sind, aber das ist nur im ersten Moment so, da die Eigenschaft top bzw. left beim CSS Layout für menupoint gar nicht vergeben sind, diese Felder unter JS somit quasi leer sind. Die derzeitige Position ist somit eine Interpretation der Browser.</p><p></p><p>Wenn ich nun anstelle:</p><p>[code]MenuBox.style.top = 225 + 'px';[/code]</p><p></p><p>in der Funktion schreibe, dann zeigt mir mein Opera das zwar mit korrektem Abstand an, aber die anderen Browser interpretieren die Massangabe natürlich anders und es kommt wieder zu Verschiebungen. Ganz schlimm ist der IE7, der die Eigenschaft left völlig versaut (Über den Kompatibilitätsmodus angeschaut.)</p><p></p><p></p><p>Nun mein Frage an euch. Wie kann ich denn die Positionierung bewerkstelligen, dass sie Konform mit CSS ist und auch in allen relevanten Browsern (Opera, FF > 3, IE > 7, Safari, Chrome) gleich dargestellt werden kann?</p><p></p><p>Danke für eure Hinweise.</p><p></p><p>Grüße</p><p>Daimonion</p></blockquote><p></p>
[QUOTE="daimonion, post: 1307592, member: 188756"] Ich bin gerade dabei für eine Bekannte eine Internetseite zu gestalten und hänge ein wenig an der korrekten Positionierung des Menüs. Hier erst mal der derzeitige Status der Seite: [url=http://www.kirsch-konditor.de]Meisterkonditorei Kirsch[/url] Als Menüvorbild hab ich mir das Menü von [url=http://www.spruengli.ch]Spruengli.ch.de[/url] genommen. Vielleicht erst mal ein wenig Code. Aufgerufen wird das Menü mittels mouseOver Event: [code]<div id="menupoint1" class="menupoint" onMouseOver="showMenu('menupoint1','Menu1')">Torten</div>[/code] Die Funktion showMenu sieht derzeit so aus: [code]function showMenu(mpoint, menu) { var menupoint = document.getElementById(mpoint); //neue Elemente generieren var MenuBox = document.createElement("div"); MenuBox.id = "Menubox1"; for (i = 0 ; i < Menu1.length ; i++) { MenuBox.appendChild(document.createTextNode(Menu1[i])); MenuBox.appendChild(document.createElement("br")); } //Eigenschaften vergeben MenuBox.style.width = 150 + "px"; MenuBox.style.backgroundColor = "#4a2910"; MenuBox.style.color = "#FFFFFF"; //menubox positionieren MenuBox.style.position = "absolute"; MenuBox.style.left = menupoint.style.left; MenuBox.style.top = menupoint.style.top; //Event für das MouseOut Ereignis hinzufügen if (MenuBox.addEventListener) { MenuBox.addEventListener("mouseout", hideMenus, false); } else if (MenuBox.attachEvent) { MenuBox.attachEvent("onmouseout", hideMenus); } //Objekt im Dom einfügen menupoint.parentNode.insertBefore(MenuBox,menupoint.nextSibling); }; function hideMenus() { var Menubox = document.getElementById("Menubox1"); Menubox.parentNode.removeChild(Menubox); };[/code] Die Funktion ist lange noch nicht fertig, daher kann es sein, dass die ein oder andere Codezeile noch nicht sauber implementiert ist. Momentan liefert dieses Stück Code folgendes Ergebnis in eigentlich allen Browsern: Nun könnte man meinen, dass die beiden Zeilen [code] MenuBox.style.left = menupoint.style.left; MenuBox.style.top = menupoint.style.top;[/code] für dieses Ergebnis verantwortlich sind, aber das ist nur im ersten Moment so, da die Eigenschaft top bzw. left beim CSS Layout für menupoint gar nicht vergeben sind, diese Felder unter JS somit quasi leer sind. Die derzeitige Position ist somit eine Interpretation der Browser. Wenn ich nun anstelle: [code]MenuBox.style.top = 225 + 'px';[/code] in der Funktion schreibe, dann zeigt mir mein Opera das zwar mit korrektem Abstand an, aber die anderen Browser interpretieren die Massangabe natürlich anders und es kommt wieder zu Verschiebungen. Ganz schlimm ist der IE7, der die Eigenschaft left völlig versaut (Über den Kompatibilitätsmodus angeschaut.) Nun mein Frage an euch. Wie kann ich denn die Positionierung bewerkstelligen, dass sie Konform mit CSS ist und auch in allen relevanten Browsern (Opera, FF > 3, IE > 7, Safari, Chrome) gleich dargestellt werden kann? Danke für eure Hinweise. Grüße Daimonion [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 5, ▼ = 2 und ■ = 7, was ist ▲ × ▼ + ■?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Menü richtig positionieren
Oben