tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
851
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Geflügel Geflügel ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Beiträge
    214
    Hallo,

    Ich habe ein <div>-Element welches Kind gaaaaanz vieler anderer <div>-Elemente ist.

    Nun möchte ich folgendes ermitteln: Die Position(X/Y) des <div>s in bezug auf den Screen.

    Meine Idee: Da offsetLeft/offsetRight sich ja am Elternelement orientiert, muss man sich durch durch den ganzen Baum nach oben "durchhangeln" und die offsets addieren.

    Frage: Stimmt das so? Wenn ja, ginge das auch eifacher?

    Noch eine Frage: Kann man direkt (ohne große Umwege) die Mausposition in bezug auf die obere linke Ecke des unter der Maus liegenden Layers ermitteln?

    Danke im Voraus!
     

  2. #2
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    um das Offset eines Elementes im "screen" zu ermitteln, hatten wir hier kürzlich einen Beitrag.

    Zu deiner zweiten Frage - du wirst wohl auch hier zunächst die kompletten Offsets des Elements ermitteln
    müssen. Diese Grösse kann dann von der aktuellen Koordinate des Mauszeigers subtrahiert werden.

    Beispiel für das Top-Offset:
    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
    
    function myTopOffset(objElem){
      // Top-Offset des Ausgangselementes
      var intOffsetTop = objElem.offsetTop;
      // Nächstes Element mit Top-Offset ermitteln
      objElem = objElem.offsetParent;
      // Solange Elemente mit relevantem Top-Offset existieren
      while(objElem){
        intOffsetTop += objElem.offsetTop;
        objElem = objElem.offsetParent;
      }
     
      return intOffsetTop;
    }
     
    function MouseOffset(objEvent, objThis){
      var objBody = null;
      // Passendes Body-Objekt ermitteln
      if(document.all && !window.opera)
        objBody = (window.document.compatMode == "CSS1Compat")? window.document.documentElement : window.document.body || null;
      else
        objBody = document.documentElement;
     
      // Aktuelle Mauskoordinaten bei Mausklick ermitteln
      var intMouseY = document.all ? (window.event.clientY+objBody.scrollTop) : objEvent.pageY;
     
      // Offset des Mauszeigers im auslösenden Element
      var intOffsetY = intMouseY - myTopOffset(objThis);
     
      objThis.innerHTML = "Maus-Position (im Dokument): " + intMouseY + "<br>Maus-Position (im Element): " + intOffsetY;
     
      return false;
    }
    Aufgerufen wird das Ganze zum Beispiel im onclick-Event eines Elements.
    Code :
    1
    
    <div onclick="MouseOffset(event, this);">Offset-Element</div>
    Vielleicht hilft dir das weiter.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  3. #3
    Geflügel Geflügel ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Beiträge
    214
    UI, werde mir das am WE durch den Kopf gehen lassen. Vielen Dank!
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 11.11.10, 06:39
  2. prüfen welches Element unter einem Element liegt?
    Von FunkyMonkey im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 10.11.07, 00:37
  3. div-Element über zwei Tabellenzeilen
    Von Flow09 im Forum CSS
    Antworten: 7
    Letzter Beitrag: 06.08.06, 20:22
  4. Float-Element ragt über Text hinaus
    Von obaran im Forum CSS
    Antworten: 4
    Letzter Beitrag: 20.03.06, 14:29
  5. Antworten: 5
    Letzter Beitrag: 23.01.06, 12:51