# JavaScript - Coordonnées du pointer et dimensions des élméments HTML
## Coordonnées du curseur
- **`x`**: Cette propriété n'est pas standard dans tous les navigateurs, et son utilisation n'est pas recommandée. C'était historiquement utilisé pour représenter la coordonnée x de l'événement, mais elle est obsolète.
- **`clientX`**: Il s'agit de la coordonnée x de l'événement par rapport à la fenêtre visible (la zone du document qui est actuellement visible à l'écran). Si vous faites défiler la page, la valeur de `clientX` ne changera pas, car elle est toujours mesurée par rapport à la fenêtre visible.
- **`layerX`**: C'est une ancienne propriété non standard qui était utilisée dans certains navigateurs, mais elle est maintenant obsolète. Il est recommandé de ne pas l'utiliser.
- **`offsetX`**: C'est la coordonnée x de l'événement par rapport à l'élément sur lequel l'événement a été déclenché. Si l'événement a été déclenché sur un élément enfant, `offsetX` donnera la position par rapport à cet élément enfant.
- **`pageX`**: Il s'agit de la coordonnée x de l'événement par rapport à l'ensemble du document (la page web entière). Si vous faites défiler la page, la valeur de `pageX` changera en conséquence.
- **`screenX`**: C'est la coordonnée x de l'événement par rapport à l'écran. Cela signifie que `screenX` donne la position horizontale de l'événement par rapport au coin supérieur gauche de l'écran.
## Obtenir les dimensions d'un élément et ses coordonnées
voici plusieurs moyens courants d'obtenir la taille et le positionnement d'un élément en JavaScript :
### Pour la taille de l'élément :
1. **`clientWidth` et `clientHeight` :** Ces propriétés donnent la largeur intérieure (sans les bordures et les débordements) d'un élément.
2. **`offsetWidth` et `offsetHeight` :** Ces propriétés fournissent la largeur totale (y compris les bordures, les marges et les débordements) d'un élément.
3. **`getBoundingClientRect()` :** Cette méthode renvoie un objet contenant des informations sur la taille et le positionnement de l'élément, telles que `width`, `height`, `top`, `bottom`, `left` et `right`.
### Pour le positionnement de l'élément :
1. **`getBoundingClientRect()` :** En plus des informations sur la taille, cette méthode fournit également des données sur le positionnement. `top`, `bottom`, `left` et `right` indiquent les positions relatives par rapport à la fenêtre.
2. **`offsetTop` et `offsetLeft` :** Ces propriétés donnent la position de l'élément par rapport à son parent direct positionné.
3. **`getComputedStyle(element).getPropertyValue('property')` :** Vous pouvez également utiliser `getComputedStyle` pour obtenir les propriétés CSS calculées, comme la propriété `top`, `left`, `right`, ou `bottom`.
Voici un exemple d'utilisation de quelques-unes de ces propriétés pour obtenir la taille et le positionnement d'un élément :
```javascript
const element = document.getElementById('monElement');
const clientWidth = element.clientWidth;
const clientHeight = element.clientHeight;
const offsetWidth = element.offsetWidth;
const offsetHeight = element.offsetHeight;
const boundingRect = element.getBoundingClientRect();
const offsetTop = element.offsetTop;
const offsetLeft = element.offsetLeft;
const computedStyle = window.getComputedStyle(element);
const topValue = computedStyle.getPropertyValue('top');
const leftValue = computedStyle.getPropertyValue('left');
console.log('Client width: ' + clientWidth);
console.log('Client height: ' + clientHeight);
console.log('Offset width: ' + offsetWidth);
console.log('Offset height: ' + offsetHeight);
console.log('Bounding rect:', boundingRect);
console.log('Offset top: ' + offsetTop);
console.log('Offset left: ' + offsetLeft);
console.log('Top value from computed style: ' + topValue);
console.log('Left value from computed style: ' + leftValue);
```
Chaque méthode a ses avantages en fonction de ce que vous essayez de réaliser. Utilisez celle qui convient le mieux à votre cas d'utilisation spécifique.
{%hackmd @alternative-rvb/contact %}