.offset([coordinates])
Methode legt die Koordinaten eines Elements fest, jedoch nur relativ zum Dokument. Wie kann ich dann die Koordinaten eines Elements relativ zum übergeordneten Element festlegen?
Ich habe festgestellt, dass diese .position()
Methode nur "top, left" -Werte relativ zum übergeordneten Element abruft, aber keine Werte festlegt.
Ich habe es mit versucht
$("#mydiv").css({top: 200, left: 200});
funktioniert aber nicht.
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});
<- gut$("#mydiv").css({top: '200', left: '200', position:'absolute'});
<- schlecht. Wenn Positionswerte Zeichenfolgen sind , müssen Sie anscheinend die Einheiten einschließen, da dies sonst keine Auswirkungen hat.quelle
Sie können die .position- Methode von jQuery UI ausprobieren .
Überprüfen Sie die funktionierende Demo.
quelle
Ich habe festgestellt, dass, wenn der übergebene Wert ein Zeichenfolgentyp ist, ihm 'px' (dh 90px) folgen muss. Wenn der Wert eine Ganzzahl ist, wird der px automatisch angehängt. Die Eigenschaften für Breite und Höhe sind fehlerverzeihender (beide Typen funktionieren).
quelle
Code-Offset dynamisch für dynamische Seite
quelle
Ich aktualisiere mein Gedächtnis beim Einstellen der Position und komme so spät dazu, dass ich nicht weiß, ob es jemand anderes sehen wird, aber -
Ich mag es nicht, die Position mit zu setzen
css()
, obwohl es oft in Ordnung ist. Ich denke, die besteposition()
Wahl ist, den von xdazz angegebenen Setter von jQuery UI zu verwenden . Wenn die jQuery-Benutzeroberfläche jedoch aus irgendeinem Grund keine Option ist (jQuery jedoch), bevorzuge ich Folgendes:Dies hat den Vorteil
$div
, dass das übergeordnete Element nicht willkürlich auf die relative Positionierung eingestellt wird (was wäre$div
, wenn das übergeordnete Element selbst absolut in etwas anderem positioniert wäre?). Ich denke , der einzige große Rand Fall ist , wenn$div
nicht jeder hatoffsetParent
, nicht sicher , ob es zurückkehren würdedocument
,null
oder etwas ganz anderes.offsetParent
ist seit jQuery 1.2.6 verfügbar, irgendwann im Jahr 2008, daher funktioniert diese Technik jetzt und wenn die ursprüngliche Frage gestellt wurde.quelle
Verwenden Sie die
offset()
Funktion vonjQuery
. Hier wäre es:quelle