webentwicklung-frage-antwort-db.com.de

Liefert den Versatz eines versteckten Elements

Wie kann ich die Koordinaten eines verborgenen Elements erhalten? offset() unterstützt nicht die Verwendung für ausgeblendete Elemente. Irgendwelche Hinweise?

37
Simon

Wenn für Ihr Element .hide() aufgerufen wurde oder wenn es display:none in css hat, macht es der Browser überhaupt nicht weiter. In diesem Fall ist die Antwort nicht direkt. In den letzten Jahren können Sie nicht einmal die Breite oder Höhe ermitteln.

Wenn Sie dagegen ein Element .show() und dann .hide() vor einer Ausführungsschleife (ein Ereignis, das durchläuft, wenn für dieses Ereignis kein Code mehr ausgeführt werden muss), wird der Browser gezwungen, die Seite weiterzuleiten Sie können den Offset zwischen dem Anzeigen und dem Ausblenden erhalten, aber es ist nicht erforderlich, sie neu zu malen, sodass Ihre Benutzer keinen Blip sehen und Sie nicht so viel Leistung verlieren, wie Sie vielleicht denken.

46
Clint Tseng

Sie können die Koordinaten des visibility:hidden-Elements abrufen, das display:none-Element wird jedoch vom Rendering-Baum ausgeschlossen. Ihre Position ist also undefiniert.

29
c-smile

Im Gegensatz zu Quick Show & Do-Stuff & Hide-Verfahren ist es möglicherweise möglich, die Lademaske einfach zu verwenden, um so zu tun, als sei der Bildschirm (oder ein Teil davon) unsichtbar. 

Dies geschah, als ich an einer Karte arbeitete, die verborgene Elemente enthielt. Ich musste css-Positionen/Offsets lesen lassen, ohne diese Elemente anzuzeigen. Ich habe drei mögliche Methoden gefunden: 

  • maske vorerst über die Karte laden, damit die Karte keine ausgeblendeten Elemente anzeigt und Offsets liest (Problem: Überlagerung verbirgt auch das übergeordnete Element (Karte)). Dies funktioniert am besten, wenn kein übergeordnetes Element vorhanden ist, das angezeigt werden muss.

  • Ändern Sie den Z-Index von Elementen, die ausgeblendet sind, sodass sie hinter dem übergeordneten Element stehen, zeigen und zeigen Sie Werte, blenden Sie sie aus und ändern Sie den Z-Index in das Original.

  • verwenden Sie separate Datenvariablen für CSS-Stile, damit sie Teil des Elements sind. Dies funktioniert Nizza, wenn Elemente feste/absolute Positionen gegen Fenster oder bestimmte Elemente haben, da css-Positionen/Offsets nicht entsprechend der Größe des Fensters/Elements geändert werden. Das hat in meinem Fall gut funktioniert, da ich mit Elementen absolut gegen Fenster gearbeitet habe (Vollbild/-Anwendung).

Andere Methoden, die von Benutzern vorgeschlagen werden, funktionieren ebenfalls, aber es hängt alles davon ab, woran Sie arbeiten.

0
Janne