Подтвердить что ты не робот

Jquery: получить смещение скрытого элемента

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

любые подсказки?

спасибо!

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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