--- title: Element.getBoundingClientRect() slug: Web/API/Element/getBoundingClientRect tags: - API - Metoda(2) - Pudełko - Widok CSSOM translation_of: Web/API/Element/getBoundingClientRect ---
Metoda Element.getBoundingClientRect() zwraca rozmiar oraz położenie elementu względem okna widoku (viewport).
rectObject = object.getBoundingClientRect();
Zwrócony jest obiekt DOMRect, wyznaczony z tablicy prostokątów zwróconych przez metodę getClientRects(), zastosowaną do danego elementu, czyli wyznaczony ze wszystkich pudełek CSS związanych z danym elementem.
Zwrócony obiekt DOMRect posiada następujące (tylko do odczytu) właściwości: left, top, right and bottom, opisujące parametry otaczającego element pudełka w pikselach. Właściwości top and left oznaczają odległość od górnego-lewego rogu aktualnego okna widoku.
Uwaga: {{Gecko("1.9.1")}} dodało właściwości width and height do obiektu DOMRect.
Puste pudełka są całkowicie ignorowane. Jeśli wszystkie elementy pudełka są puste, to zwrócony prostokąt ma wysokość i szerokość równą zero zaś własności top oraz left dotyczą pierwszego pudełka CSS (w porządku kontekstowym) który zawiera dany element.
Efekt przewijania (scrolling) okna widoku (lub dowolnego innego przewijalnego elementu) jest uwzględniany podczas wyznaczania otaczającego pudełka. Zatem, właściwości top oraz left zmieniają się natychmiast po dowolnym przewinięciu (są więc względne w stosunku do widoku, a więc nie są absolutne). W celu wyznaczenia absolutnego położenie elementu należy do właściwości top oraz left dodać aktualne pozycje przesuwania (scrolling position) (można je uzyskać za pomocą window.scrollX and window.scrollY).
Skrypty wymagające zgodności z różnymi przeglądarkami mogą korzystać z metod window.pageXOffset oraz window.pageYOffset zamiast window.scrollX oraz window.scrollY. Skrypty które nie mają dostępu do window.pageXOffset, window.pageYOffset, window.scrollX ani window.scrollY mogą stosować następujący kod :
// Zamiast scrollX (((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft // Zamiast scrollY (((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop
// rect jest obiektem DOMRect z sześcioma własnościami: left, top, right, bottom, width, height var rect = obj.getBoundingClientRect();
| Specyfikacja | Status | Komentarz |
|---|---|---|
| {{SpecName("CSSOM View", "#the-getclientrects()-and-getboundingclientrect()-methods", "Element.getBoundingClientRect()")}} | {{Spec2("CSSOM View")}} | definicja początkowa |
Metoda getBoundingClientRect() została wprowadzona po raz pierwszy w modelu MS IE DHTML.
Wynik metody getBoundingClientRect() jest obiektem zamrożonym.
| Właściwość | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Postawowe wsparcie | 1.0[1] | {{CompatGeckoDesktop(1.9)}} | 4.0[2] | {{CompatVersionUnknown}} | 4.0 |
| width/height | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(1.9.1)}} | 9 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
| Właściwość | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Postawowe wsparcie | 2.0 | 1.0 | {{CompatGeckoMobile(1.9)}} | 6.0 | {{CompatVersionUnknown}} | 4.0 |
[1] specyfikacja CSS dla elementu 'use' wskazującego na element 'symbol' wymaga aby domyślne wartości atrybutów width oraz height elementu 'use' ustawione były na 100%. Również, specyfikacja CSS dla atrybutów width oraz height elementu 'svg' wymaga 100% jako wartości domyślne. Google Chrome nie przestrzega tych wymagań dla elementów 'use'. Chrome nie uwzględnia również 'stroke-width'. Zatem metoda getBoundingClientRect() może zwrócić inny prostokąt w Chrome niż w Firefox.
[2] W IE8, oraz we wcześniejszych wersjach, obiekt DOMRect zwrócony przez getBoundingClientRect() nie zawiera właściwości height ani width. Żadne dodatkowe właściwości (w tym height oraz width) nie mogą być dodane do tych obiektów DOMRect.
Począwszy od Gecko 12.0 {{geckoRelease("12.0")}}, efekt transformacji CSS jest uwzględniany w algorytmie wyznaczania otaczającego pudełka (bounding rectangle).