Ankündigung

Einklappen
Keine Ankündigung bisher.

OnClick-JS-Menü soll unter dem Auslöserlink stehen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • OnClick-JS-Menü soll unter dem Auslöserlink stehen

    Hallo Forum!
    Ich wollt mir ein kleiner Dynamisches Menü mit JS für meine Seite machen, was auch gut funktioniert hat. Das anzuzeigende Menü ist einem <Div> mit position:absolute und visibilty:hidden und beim Klicken auf meinen Link erscheint das Menü auch. Allerdings immer am linken Bildrand. Nun kann ich aber nich einfach mit leftx und topx die Position bestimmen, weil meine Seite eine Tabelle im center ist. Ich hab dann mal probiert eine JS-Funktion zu schreiben die die Position des Links ermittelt und diese dem Menü zuordnet, aber dann ist das Menü nicht mehr absolut und verschiebt die Seite
    Wie kann ich das umgehen?

    Hier noch die Funktionen und Codezeilen:

    Code:
    function showmenue( target ) {
    	if(document.getElementById) {
    		target = document.getElementById(target);
    		if(target.style.visibility == "hidden") {
    			target.style.visibility="visible";
    		} else {
    			target.style.visibility="hidden";
    		}
    	}
    }
    Code:
    function getPosition( target ) {
    	var x=0, y=0;
    	position=new Object();
    	if(document.getElementById) {
    		target = document.getElementById( target );
    		position.x+=target.offsetLeft;
    		position.y+=target.offsetTop;
    	}
    	return position;
    }
    Ohne Positionsermittelung:
    Code:
    Menü
    
    <div id="menue" align="left" style="position:absolute; height:75px; width:175px; z-index:1; border:1px; visibility:hidden">
      (...)
    </div>
    Mit Positionsermittelung:
    Code:
    Menü
    
    <div id="menue" align="left" style="position:getPosition('menuelink'); height:75px; width:175px; z-index:1; border:1px; visibility:hidden">
      (...)
    </div>
    Ich hoffe ich hab mich verständlich ausgedrückt und jemand kann mir helfen!

    Danke


  • #2
    ich glaub man muss irgendwie den abstand zwischen der linken rand des browserfensters und den linken rand des menüs und den oberen rand des browserfensters mit dem oberen rand des menüs errechnen... und dann als position mit css ausrichten (is nur ne vermutung)

    so was gibts auf dem fs-location.de Forum (auf einen Nicknamen klicken)
    Ich hab mir den Quellcode davon mal angeschaut (weil ich des gleiche problem hatte wie du), aber nichts verstanden...

    Kommentar


    • #3
      Hey cool danke!!!
      Hab mich durchgefitzt und konnte nun meine Funktion komplettieren!
      Mein Code sieht jetzt folgendermaßen aus:
      PHP-Code:

      function getPositiontarget,axis ) {
          var 
      position=0;
          
      target document.getElementByIdtarget );
          while(
      target.offsetParent) {
              switch(
      axis) {
                  case 
      "y"// X-Koordinate ermitteln (top)
                      
      position+=target.offsetTop;
                      
      target=target.offsetParent;
                  break;
                  case 
      "x"// X-Koordinate ermitteln (left)
                      
      position+=target.offsetLeft;
                      
      target=target.offsetParent;
                  break;
                  default: 
      // Position ermitteln (position)
                      
      var x=0y=0;
                      
      position=new Object();
                      
      position.x+=target.offsetLeft;
                      
      position.y+=target.offsetTop;
                  break;
              }
          }
          return 
      position;

      PHP-Code:

      function menuetarget,object ) { // Target bezieht sich auf das Menü und Object auf den Auslöserlink
          
      if(document.getElementById) {
              
      target document.getElementByIdtarget );
              if(
      target.style.visibility == "hidden") {
                  
      target.style.visibility="visible";
                  
      target.style.top getPosition(object,'y') + 10 'px'// +10 kann je nach Bedarf angepasst werden
                  
      target.style.left getPosition(object,'x') - 50 'px'// -50 kann je nach Bedarf angepasst werden
              
      } else {
                  
      target.style.visibility="hidden";
              }
          }

      PHP-Code:
      [url="#menue"][ Menü ][/url]

      <
      div id="menue" align="left" style="position:absolute; height:75px; width:175px; z-index:1; border:1px; visibility:hidden">
        (...)
      </
      div
      Ich bedanke mich!

      Kommentar

      Lädt...
      X