Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.01.2017, 17:03
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

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

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

то при каждом новом выполнении этого кода, элемент смещается чуть ниже и правее, хотя координаты в обеих случаях задаются абсолютные.
Ответить с цитированием
  #2 (permalink)  
Старый 17.01.2017, 00:45
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

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.
Странно что второй вариант вообще работает
Ответить с цитированием
  #3 (permalink)  
Старый 17.01.2017, 08:21
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

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

http://rem-mastera.ru/media/imgs/tmp/jquery_offset.html здесь демо пример сделал, для наглядности.
Ответить с цитированием
  #4 (permalink)  
Старый 17.01.2017, 09:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

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

Ты пытаешься использовать координаты относительно документа.
Ответить с цитированием
  #5 (permalink)  
Старый 17.01.2017, 09:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от winch
я пытаюсь установить координаты скрытому, а потом показать его.
И ты решил, что это будет работать... Но оно не работает.
Ответить с цитированием
  #6 (permalink)  
Старый 17.01.2017, 09:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от winch
offset
$("#FloatForm").css({ left:100, top:100}).show();
Ответить с цитированием
  #7 (permalink)  
Старый 17.01.2017, 10:02
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

Сообщение от Rise Посмотреть сообщение
winch, там плагин сам позиционирует и ты еще из вне пытаешься - вот такой эффект и получается в результате.
ну я же делаю offset({ left:100, top:100}), по логике координаты должны записаться поверх и затереть, то что позиционирует плагин. а получается, что они как бы добавляются к предыдущей позиции.
Ответить с цитированием
  #8 (permalink)  
Старый 17.01.2017, 10:08
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

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

Ты пытаешься использовать координаты относительно документа.
а координаты относительно документа и абсолютные - это не одно и тоже?
ну хотя это не важно. вопрос был почему метод offset для видимых и невидимых элементов устанавливает позицию по разному.
Ответить с цитированием
  #9 (permalink)  
Старый 17.01.2017, 10:15
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

Сообщение от рони Посмотреть сообщение
$("#FloatForm").css({ left:100, top:100}).show();
добавил к своему примеру вариант через css. да, в этом случае работает корректно. но мне просто интересно почему offset с невидимыми элементами работает так странно.
Ответить с цитированием
  #10 (permalink)  
Старый 17.01.2017, 10:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от winch
мне просто интересно почему offset с невидимыми элементами работает так странно
Запиши это как особенность.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор с вариантом значений. dzho Общие вопросы Javascript 45 06.08.2017 03:54
JQuery, анимация для нескольких элементов сразу, возможно ли? Logo jQuery 21 29.05.2012 21:50
$('#id') не работает для некоторых элементов tmvrus jQuery 10 12.10.2010 15:45
Некорректно работает функция для создания элементов exec Общие вопросы Javascript 4 13.07.2010 11:15
Использование одной функции для элементов с разными ID Ferroks Общие вопросы Javascript 10 11.09.2009 08:51