Absolute Position -> relative Position

LL0rd

Erfahrenes Mitglied
Hallo,

ich hab gerade ein kleines Problem. Ich muss irgendwie aus der absoluten Position eines Objektes die relative Position zu einem Objekt berechnen. Kann mir jemand sagen, wie das geht?

Mir macht vor allem der Zeilenumbruch sorgen, denn so richtig habe ich keine Ahnung, wie ich mit ihm umgehen muss.
 
Moin,

dein Hifsmittel heisst offsetTop/offsetLeft) ..darin ist der Abstand eines Elementes zu seinem Elternelement gespeichert.

Je nach Knotenstruktur müsstest du da von beiden Elementen den absoluten Wert(Abstand zum <body>)ermitteln und geneneinander verrechnen.

Wenn beide beteiligten Elemente in einer Vorfahre-Nachfahre-Beziehung stehen, wird es etwas einfacher.
 
Hi,

ich habe die Einfügen-Operation mit der Ermittlung der (richtigen) relativen Position zum Elternelement heute Mittag fertiggeschrieben. Das Ergebnis funktioniert (fast) und sieht so aus:

Javascript:
		function setPosition(absolutePosition,newKachel){
			if(absolutePosition!=null){
				if($lastKachel!=null){
					var x = $lastKachel.offset().left + $lastKachel.width() - parseInt($lastKachel.css("left"));
					var y = $lastKachel.offset().top - parseInt($lastKachel.css("top")); 
			
					newKachel.css("left",(absolutePosition.left - x) + "px");
					newKachel.css("top",(absolutePosition.top - y) + "px");
			
				}else{
					newKachel.css("left",(absolutePosition.left - 389) + "px");
					newKachel.css("top",(absolutePosition.top - 272) + "px");				
				}
				
			}
		}

Allerdings habe ich noch ein Problem. Und das ist der Zeilenumbruch. Aktuell sind es ca. 4 Elemente, die bei mir in eine Zeile passen. Das fünfte Element verschwindet mit diesem Code im Nirvana (eben das erste Element nach dem Zeilenumbruch), das sechste ist allerdings wieder richtig. Und momentan weiß ich nicht, wie ich dieses Problem beheben könnte.

Ich könnte zwar immer die Breite der eingefügten Elemente addieren und bei einem Overflow einfach von einer "anderen" Position (left und top = 0) ausgehen, doch irgendwie weiß ich nicht, ob das so eine gute und allgemeine Lösung ist. Hab da irgendwie ein schlechtes Gefühl bei.
 
Zuletzt bearbeitet von einem Moderator:
Mit $.css() kannst du dort nicht arbeiten.
Das liefert dir style-Attribute, aber keine Werte die auf die tatsächliche Darstellung im Browser Bezug nehmen.
 
Ich will dir mal kurz erklären, worum es hier geht. Ich habe eine Arbeitsfläche, auf die ein Platzhalter gezogen werden kann. Sobald man den Platzhalter loslässt, soll er sich in die Arbeitsfläche integrieren (ein <li> wird in eine <ul> eingefügt) und zwar genau an der Position, an der dieser Platzhalter losgelassen wurde.

Die einzelnen <ul> sind relativ untereinander ausgerichtet. Wenn ich nun also die relative Position zu einer absoluten eines neuen <li> berechnen möchte, benötige ich die absolute Position des letzten und des Platzhalters, die breite des letzten sowie die aktuelle relative position. Die letzten beiden Werte bekomme ich eben aus dem css.
 

Neue Beiträge

Zurück