07.09.2022, 21:18
|
Аспирант
|
|
Регистрация: 05.08.2022
Сообщений: 64
|
|
Окончательные координаты элемента на странице
Подскажите пожалуйста, если я правильно понимаю, то происходит следующее:
К примеру загружается страница и я поставил прослушивать Mutationobserver на появление класса отвечающего за какую то к примеру кнопку.
Mutationobserver срабатывает - сообщая о том, что в document`е появился элемент отвечающий за кнопку.
Далее я сразу вызываю .getBoundingClientRect() на этом элементе и соотвесвенно возвращаются координаты, но, если вызвать getBoundingClientRect() условно через еще одну секунду, то коордианты будут уже другие.
Если я правильно понимаю, то элемент на странице, как бы появляются не сразу на своем окончательном месте, а как бы отрисовывается постепенно и если это так - то вот, как можно понять, что элемент уже все - на всоем месте и коордианты его более не изменятся ?
|
|
08.09.2022, 08:33
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Смотря в какой момент срабатывает Mutationobserver. Если до события window.onload, то до этого момента стили css еще могут быть не загружены и не применены, img не загружены, и их размеры не известны, поэтому окончательные координаты не известны.
Если до события DOMContentLoaded, то даже не все элементы загрузились и не все DOM дерево построено. По мере построения дерева и размещения других элементов, координаты могут меняться.
Последний раз редактировалось voraa, 08.09.2022 в 08:48.
|
|
08.09.2022, 09:16
|
Аспирант
|
|
Регистрация: 05.08.2022
Сообщений: 64
|
|
Сообщение от voraa
|
Смотря в какой момент срабатывает Mutationobserver. Если до события window.onload, то до этого момента стили css еще могут быть не загружены и не применены, img не загружены, и их размеры не известны, поэтому окончательные координаты не известны.
Если до события DOMContentLoaded, то даже не все элементы загрузились и не все DOM дерево построено. По мере построения дерева и размещения других элементов, координаты могут меняться.
|
Немного по другому - точно после событий window.onload и DOMContentLoaded. Я немного упрощенно описал.
По факту так - страница полностью загружена, я нажимаю на ней кнопку и после нажатия кнопки появляется/выезжает условно контекстное меню, ну то есть выезжает "окошечко" с другим кнопками - вот ее я и отслеживаю в Mutationobserver и вот именно там проблема с координатами.
Последний раз редактировалось Andy_kun, 08.09.2022 в 09:22.
|
|
08.09.2022, 10:48
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Как "выезжает"? Оно постепенно двигается?
|
|
08.09.2022, 10:50
|
Аспирант
|
|
Регистрация: 05.08.2022
Сообщений: 64
|
|
Сообщение от voraa
|
Как "выезжает"? Оно постепенно двигается?
|
Оно быстро, но постепенно появляется.
|
|
08.09.2022, 11:00
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются.
|
|
08.09.2022, 11:43
|
Аспирант
|
|
Регистрация: 05.08.2022
Сообщений: 64
|
|
Сообщение от voraa
|
Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются.
|
Да, но все таки - это возможно или нет ?
|
|
08.09.2022, 11:53
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Что возможно?
Создается какой то элемент, он внедряется в DOM с какими то координатами. Потом, по какой то причине начинает "выезжать". Пусть даже быстро. Разумеется его координаты меняются.
|
|
08.09.2022, 11:57
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Сообщение от Andy_kun
|
вот, как можно понять, что элемент уже все - на всоем месте и коордианты его более не изменятся ?
|
Смотря, как организовано появление этого элемента.
Если там используется CSS со свойством transition, то надо ловить событие transitionend.
https://developer.mozilla.org/ru/doc...itionend_event
|
|
|
|