Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Окончательные координаты элемента на странице (https://javascript.ru/forum/events/84435-okonchatelnye-koordinaty-ehlementa-na-stranice.html)

Andy_kun 07.09.2022 21:18

Окончательные координаты элемента на странице
 
Подскажите пожалуйста, если я правильно понимаю, то происходит следующее:

К примеру загружается страница и я поставил прослушивать Mutationobserver на появление класса отвечающего за какую то к примеру кнопку.

Mutationobserver срабатывает - сообщая о том, что в document`е появился элемент отвечающий за кнопку.

Далее я сразу вызываю .getBoundingClientRect() на этом элементе и соотвесвенно возвращаются координаты, но, если вызвать getBoundingClientRect() условно через еще одну секунду, то коордианты будут уже другие.

Если я правильно понимаю, то элемент на странице, как бы появляются не сразу на своем окончательном месте, а как бы отрисовывается постепенно и если это так - то вот, как можно понять, что элемент уже все - на всоем месте и коордианты его более не изменятся ?

voraa 08.09.2022 08:33

Смотря в какой момент срабатывает Mutationobserver. Если до события window.onload, то до этого момента стили css еще могут быть не загружены и не применены, img не загружены, и их размеры не известны, поэтому окончательные координаты не известны.
Если до события DOMContentLoaded, то даже не все элементы загрузились и не все DOM дерево построено. По мере построения дерева и размещения других элементов, координаты могут меняться.

Andy_kun 08.09.2022 09:16

Цитата:

Сообщение от voraa (Сообщение 547848)
Смотря в какой момент срабатывает Mutationobserver. Если до события window.onload, то до этого момента стили css еще могут быть не загружены и не применены, img не загружены, и их размеры не известны, поэтому окончательные координаты не известны.
Если до события DOMContentLoaded, то даже не все элементы загрузились и не все DOM дерево построено. По мере построения дерева и размещения других элементов, координаты могут меняться.

Немного по другому - точно после событий window.onload и DOMContentLoaded. Я немного упрощенно описал.

По факту так - страница полностью загружена, я нажимаю на ней кнопку и после нажатия кнопки появляется/выезжает условно контекстное меню, ну то есть выезжает "окошечко" с другим кнопками - вот ее я и отслеживаю в Mutationobserver и вот именно там проблема с координатами.

voraa 08.09.2022 10:48

Как "выезжает"? Оно постепенно двигается?

Andy_kun 08.09.2022 10:50

Цитата:

Сообщение от voraa (Сообщение 547853)
Как "выезжает"? Оно постепенно двигается?

Оно быстро, но постепенно появляется.

voraa 08.09.2022 11:00

Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются.

Andy_kun 08.09.2022 11:43

Цитата:

Сообщение от voraa (Сообщение 547855)
Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются.

Да, но все таки - это возможно или нет ?

voraa 08.09.2022 11:53

Что возможно?
Создается какой то элемент, он внедряется в DOM с какими то координатами. Потом, по какой то причине начинает "выезжать". Пусть даже быстро. Разумеется его координаты меняются.

voraa 08.09.2022 11:57

Цитата:

Сообщение от Andy_kun
вот, как можно понять, что элемент уже все - на всоем месте и коордианты его более не изменятся ?

Смотря, как организовано появление этого элемента.
Если там используется CSS со свойством transition, то надо ловить событие transitionend.
https://developer.mozilla.org/ru/doc...itionend_event


Часовой пояс GMT +3, время: 19:19.