Получить смещение скрытого элемента - PullRequest
38 голосов
/ 12 мая 2011

Как я могу получить координаты скрытого элемента? offset() не поддерживает использование скрытых элементов. Есть намеки?

Ответы [ 3 ]

47 голосов
/ 12 мая 2011

Если вашему элементу был вызван .hide() или если он получил display:none в css, браузер вообще не будет отрисовывать его. В этом случае ответ не прямо. В недавних jQueries вы не можете даже получить его ширину или высоту.

С другой стороны, если вы .show() элемент, а затем .hide() перед циклом выполнения (событие запускается, когда больше нет кода для этого события), браузер будет вынужден ретранслировать страница, и вы сможете получить ее смещение между показом и скрытием, но не нужно будет перерисовывать, поэтому ваши пользователи не увидят всплывающее окно, и вы не потеряете столько производительности, сколько вы может подумать.

30 голосов
/ 12 мая 2011

Вы можете получить координаты элемента visibility:hidden, но элемент display:none исключен из дерева рендеринга.Так что его позиция не определена.

0 голосов
/ 03 января 2013

Кроме процедуры быстрого показа, создания и скрытия, можно просто использовать маску загрузки, чтобы сделать вид, что экран (или его часть) невидим.

Это произошло, когда я работал над картой, в которой были скрытые элементы. Мне нужно было прочитать css-позиции / смещения без отображения этих элементов. Я придумал три возможных метода:

  • на данный момент загружаем маску на карту, чтобы карта не отображала скрытые элементы и считывала смещения (проблема: оверлей также скрывает родительский элемент (карту)). Это работает лучше всего, если нет родительского элемента, который требует отображения.

  • изменить z-индекс скрытых элементов, чтобы они проходили за родительским элементом, отображали и считывали значения, скрывали их и меняли z-index на оригинальный.

  • использовать отдельные переменные данных для стилей CSS, чтобы они были частью элемента. Это хорошо работает, если элементы имеют фиксированные / абсолютные позиции относительно окна или определенного элемента, так как css-позиции / смещения не будут меняться в зависимости от размера окна / элемента. В моем случае это хорошо работало, так как я работал с элементами абсолютно против окна (полноэкранное приложение / окно).

Другие методы, предложенные пользователями, тоже работают, но все зависит от того, над чем вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...