Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   offset - установка местоположения для невидимых элементов. (https://javascript.ru/forum/library-toolkit-framework/66893-offset-ustanovka-mestopolozheniya-dlya-nevidimykh-ehlementov.html)

winch 16.01.2017 17:03

offset - установка местоположения для невидимых элементов.
 
Объясните пожалуйста, почему jquery функция offset некорректно устанавливает местоположение невидимым элементам?

я заметил, что при таком вызове:
$("#id").show().offset({left: 100, top: 100 });
всё хорошо.
а если сделать так:
$("#id").offset({left: 100, top: 100 }).show();

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

TestUser013 17.01.2017 00:45

http://api.jquery.com/offset/
Цитата:

Note: jQuery does not support getting the offset coordinates of hidden elements or accounting for borders, margins, or padding set on the body element.
While it is possible to get the coordinates of elements with visibility:hidden set, display:none is excluded from the rendering tree and thus has a position that is undefined.
Странно что второй вариант вообще работает :)

winch 17.01.2017 08:21

Немного не то.
Там написано, что не поддерживается получение координат для скрытых элементов, а я пытаюсь установить координаты скрытому, а потом показать его.

http://rem-mastera.ru/media/imgs/tmp/jquery_offset.html здесь демо пример сделал, для наглядности.

ksa 17.01.2017 09:27

Цитата:

Сообщение от winch
хотя координаты в обеих случаях задаются абсолютные

У тебя не совсем верное представление об абсолютных координатах... :)

Ты пытаешься использовать координаты относительно документа. ;)

ksa 17.01.2017 09:43

Цитата:

Сообщение от winch
я пытаюсь установить координаты скрытому, а потом показать его.

И ты решил, что это будет работать... Но оно не работает.

Rise 17.01.2017 09:52

winch, там плагин сам позиционирует и ты еще из вне пытаешься - вот такой эффект и получается в результате.

рони 17.01.2017 09:53

Цитата:

Сообщение от winch
offset

$("#FloatForm").css({ left:100, top:100}).show();

winch 17.01.2017 10:02

Цитата:

Сообщение от Rise (Сообщение 441051)
winch, там плагин сам позиционирует и ты еще из вне пытаешься - вот такой эффект и получается в результате.

ну я же делаю offset({ left:100, top:100}), по логике координаты должны записаться поверх и затереть, то что позиционирует плагин. а получается, что они как бы добавляются к предыдущей позиции.

winch 17.01.2017 10:08

Цитата:

Сообщение от ksa (Сообщение 441047)
У тебя не совсем верное представление об абсолютных координатах... :)

Ты пытаешься использовать координаты относительно документа. ;)

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

winch 17.01.2017 10:15

Цитата:

Сообщение от рони (Сообщение 441052)
$("#FloatForm").css({ left:100, top:100}).show();

добавил к своему примеру вариант через css. да, в этом случае работает корректно. но мне просто интересно почему offset с невидимыми элементами работает так странно.


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