Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.09.2022, 21:18
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

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

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

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

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

Если я правильно понимаю, то элемент на странице, как бы появляются не сразу на своем окончательном месте, а как бы отрисовывается постепенно и если это так - то вот, как можно понять, что элемент уже все - на всоем месте и коордианты его более не изменятся ?
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2022, 08:33
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

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

Последний раз редактировалось voraa, 08.09.2022 в 08:48.
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2022, 09:16
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

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

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

Последний раз редактировалось Andy_kun, 08.09.2022 в 09:22.
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2022, 10:48
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Как "выезжает"? Оно постепенно двигается?
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2022, 10:50
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Сообщение от voraa Посмотреть сообщение
Как "выезжает"? Оно постепенно двигается?
Оно быстро, но постепенно появляется.
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2022, 11:00
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются.
Ответить с цитированием
  #7 (permalink)  
Старый 08.09.2022, 11:43
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Сообщение от voraa Посмотреть сообщение
Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются.
Да, но все таки - это возможно или нет ?
Ответить с цитированием
  #8 (permalink)  
Старый 08.09.2022, 11:53
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Что возможно?
Создается какой то элемент, он внедряется в DOM с какими то координатами. Потом, по какой то причине начинает "выезжать". Пусть даже быстро. Разумеется его координаты меняются.
Ответить с цитированием
  #9 (permalink)  
Старый 08.09.2022, 11:57
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не корретная работа выбора элемента в динамическом <select> CTABP Элементы интерфейса 3 19.09.2017 15:24
Поиск элемента на странице для условия SloGS Javascript под браузер 10 05.05.2016 19:10
как обратиться к items элемента из другого элемента и изменить его? Krepkii ExtJS 2 12.02.2013 14:53
Узнать id элемента по позиции на странице Mukhtar Events/DOM/Window 8 04.01.2013 13:26
Обновление элемента на странице ajax-ом Urfin jQuery 1 24.07.2009 18:40