Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

HTMLElement : propriété offsetLeft

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

La propriété en lecture seule offsetLeft de l'interface HTMLElement retourne le nombre de pixels de décalage du coin supérieur gauche de l'élément courant vers la gauche à l'intérieur du nœud HTMLElement.offsetParent.

Pour les éléments de type bloc, offsetTop, offsetLeft, offsetWidth et offsetHeight décrivent la boîte de bordure de l'élément par rapport à l'offsetParent.

Cependant, pour les éléments en ligne (comme une étendue) qui peuvent passer d'une ligne à l'autre, offsetTop et offsetLeft décrivent la position de la première boîte de bordure (utilisez Element.getClientRects() pour obtenir sa largeur et sa hauteur), tandis que offsetWidth et offsetHeight décrivent les dimensions de la boîte de bordure englobante (utilisez Element.getBoundingClientRect() pour obtenir sa position). Ainsi, une boîte avec la gauche, le haut, la largeur et la hauteur de offsetLeft, offsetTop, offsetWidth et offsetHeight ne sera pas une boîte englobante pour une étendue (span) avec un retour à la ligne.

Valeur

Un entier.

Exemple

js
const colorTable = document.getElementById("t1");
const tOLeft = colorTable.offsetLeft;

if (tOLeft > 5) {
  // grand décalage à gauche : faire quelque chose ici
}

Cet exemple montre une « longue » phrase qui déborde dans un bloc avec une bordure bleue, et une boîte rouge dont on pourrait croire qu'elle décrit les limites de l'étendue.

Une phrase qui dit : Courte étendue. Ce texte est entièrement dans un bloc avec une bordure bleue. Une phrase qui dit : Longue étendue qui déborde dans ce bloc. Les mots « longue étendue qui déborde » sont dans une boîte à bordure rouge. Les mots « dans ce bloc » sont dans le bloc à bordure bleue.

html
<div class="span-container">
  <span>Courte étendue.</span>
  <span id="long-span">Longue étendue qui déborde dans ce bloc.</span>
</div>

<div id="box"></div>
css
.span-container {
  width: 300px;
  border-color: blue;
  border-style: solid;
  border-width: 1px;
}

#box {
  position: absolute;
  border-color: red;
  border-width: 1px;
  border-style: solid;
  z-index: 10;
}
js
const box = document.getElementById("box");
const longSpan = document.getElementById("long-span");
box.style.left = `${longSpan.offsetLeft}${document.body.scrollLeft}px`;
box.style.top = `${longSpan.offsetTop}${document.body.scrollTop}px`;
box.style.width = `${longSpan.offsetWidth}px`;
box.style.height = `${longSpan.offsetHeight}px`;

Spécifications

Specification
CSSOM View Module
# dom-htmlelement-offsetleft

Compatibilité des navigateurs

Voir aussi