So verwenden, wenn ich die Frage richtig zu verstehen, müssen Sie Positionswert für die Cursor innerhalb der Eingabe und Sie wollen es in verschiedene Arten von CSS-Einheiten konvertieren, vermutlich, so dass Sie tun können, etwas zur Eingabe oder verwandten Dingen
Das erste, was zu verstehen ist, dass ClientRect-Positionen relativ zum Ansichtsfenster sind. Wie Vchutchinson darauf hingewiesen hat, müssen Sie die Breite von Text mit dem "linken" Wert der Eingabe vergleichen, wie er von getBoundingClientRects definiert wurde. Das ist ein guter Anfang, aber wenn Sie nicht nur links beeinflussen, sondern sich auch um Top kümmern, müssen Sie das Scrollen berücksichtigen. Wenn Ihr Fenster/Seite der einzige Scroll-Container ist, sollten Sie dies einfach tun, indem Sie window.scrollY
nach oben und window.scrollX
nach links hinzufügen, um Ihren Versatz relativ zum Fenster zu verstehen.
Alle diese Einheiten sind standardmäßig Pixel ...Wenn Sie konvertieren möchten, es ist ziemlich einfach zu rem, 1 rem = die font-size Ihres Root-Element, so zu konvertieren, um rem Sie so etwas wie
var remBase = parseInt(window.getComputedStyle(document.body).getPropertyValue('font-size'), 10);
var remValue = (myComputedPixelValue/remBase) + "rem";
Doing VW ist ähnlich mit der Antwort in Get the browser viewport dimensions with JavaScript tun können Cross-Browser-Fenster Dimensionen, dann würden Sie mit etwas beenden, die
var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
var vwValue = (myComputedPixelValue/viewportWidth) + "vw";
Prozent sind kniffliger wie
aussieht, weil Sie es auf dem übergeordneten des Elements auf Basis zu berechnen brauchen würden, um Sie zum CSS-Wert bewerben , aber die allgemeine Idee folgt demselben Prinzip.
Obwohl ich die relevante Dokumentation noch nicht finden kann, bin ich ziemlich sicher, dass die zurückgegebenen Werte von 'getBoundingClientRect' alle in Pixeln sind. – evolutionxbox
Ich denke, die eigentliche Funktion, die Sie aufrufen, ist Element.getClientRects(). In diesem Fall sind die zurückgegebenen Werte Pixelwerte. Lesen Sie https://developer.mozilla.org/en-US/docs/Web/API/Element/getClientRects – Flyer53
1034 kann nicht pixles sein .. Die tatsächliche Breite in pixles wäre um 35px – Matarishvan