Poznajemy properties klasy Element oraz HTMLElement dotyczące wielkości, rozmiarów i innych takich. Do dzieła.
e.clientTop: szerokość bordera górnego danego elementu
e.clientLeft: szerokość bordera lewego danego elementu
HTMLElement.offsetParent: rodzic, wobec którego element HTML jest offsetowany
HTMLElement.offsetTop: odległość od góry zewnętrznej granicy tego elementu (wliczając margines) do górnego końca paddingu jego offsetParenta, tzw. najbliższego wypozycjonowanego elementu (positon not static)
HTMLElement.offsetLeft: na ile mamy offset w lewo od naszego offsetParenta
e.clientHeight: wysokość elementu, razem z paddingiem, ale bez margina, bordera i podłużnego scrolla, jeśli obecny
e.clientWidth: szerokość elementu, razem z paddingiem, ale bez margina, bordera i pionowego scrolla, jeśli obecny
HTMLElement.offsetWidth: szerokość elementu, wliczając w to padding, border, pionowy scroll (jeśli obecny) ale bez before i after (pseudoelementy)
HTMLElement.offsetHeight: wysokość elementu, wliczając padding i border i podłużnego scrolla (jeśli obecny)
Mamy też metodę e.getBoundingClientRect(). Zwraca ona położenie naszego elementu względem viewportu:
- x/left – odległość od lewej viewportu do elementu
- y/top – odległość od góry
- bottom – top + wysokość
- right – left + szerokość
Myślę, że to dobra okazja, aby przypomnieć różne mouse eventy i ich properties:
- clientX/clientY – odległość miejsca kliknięcia od viewportu
- pageX/pageY – odległość miejsca kliknięcia od strony (wliczając w to elementy ukryte przez scroll)
- screenX/sceenY – odległość miejsca kliknięcia od ekranu (wliczając w to cały ekran)
- offsetX/offsetY – odległość miejsca kliknięcia od krańca paddingu target elementu
Jeszcze to sobie wszystko przećwiczyć zdążymy.