С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
10 / 10 / 3
Регистрация: 01.09.2011
Сообщений: 92

Почему offset() устанавливает координаты не правильно?

17.11.2015, 09:51. Показов 3314. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу разместить элемент div около поля input. Для этого мне нужно взять координаты этого поля и задать их для div.
Простой пример:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html>
<html>
  <head>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="script.js"></script>
  <style>
 
    body {
      background: #cce;
      margin: 0;
      padding: 0;
      position: relative;
    }
 
    .wrap{
      position: relative;
      margin-left: 0;
      background: RED;
    }
 
    input#name {
      margin: 100px;
      width: 200px;
    }
 
    .tooltip {
      z-index: 3;
      position: absolute;
      padding: 5px;
      background-color: #555;
      color: white;
      border-radius: 5px;
      box-shadow: 0px 0px 5px 2px #c2c2c2;
    }
 
  </style>
  
  <title>tooltip</title>
    
  </head>
 
  <body>
    <div class="wrap">
      Имя: <input type="text" id="name" />
    </div>
</body>
 
</html>
файл script.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(function() {
      
      var tooltip = $('<div>', {
                    'class' : 'tooltip',
                    text: 'Подсказка'
                });
      
      var pos = $('input#name').offset();
      
      tooltip.offset({top:pos.top, left:pos.left});
      
      tooltip.insertAfter($('input#name'));
      
      console.log(pos);
      
    })
Если margin у обёртки .wrap равен нулю, как в примере, offset() определяет и устанавливает координаты для подсказки правильно - точно по координатам инпута. Но если сделать отступ для wrap, допустим margin:100px.
То offset() определяет координаты правильно, а устанавливает относительно родителя.
Почему offset() устанавливает координаты относительно родителя, а не документа, как это описано здесь: http://api.jquery.com/offset/?

Добавлено через 6 минут
Забыл ссылочку на пример: https://jsfiddle.net/boomrest/6bnr184f/
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2015, 09:51
Ответы с готовыми решениями:

Не правильно работает .offset()
Доброго времени суток! Пишу для сайта функционал, который группирует несколько объектов в один div и позволяет работать с ними, как с...

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

Notice Undefined offset почему?
Здравствуйте. Пытаюсь удалить из массива дважды, но почему то Notice Undefined offset Хотя удаляет. Как поправить ? $u=array(...

3
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.11.2015, 10:07
Я думаю потому что это в свойствах указано

CSS
1
2
3
.wrap{
position: relative;
}
CSS
1
2
3
.tooltip {
position: absolute;
}

Кликните здесь для просмотра всего текста
Если у родителя значение position задано как fixed, relative или absolute, то отсчет координат ведется от края родительского элемента.
0
10 / 10 / 3
Регистрация: 01.09.2011
Сообщений: 92
17.11.2015, 10:39  [ТС]
Почему в спецификации-то написано "относительно документа"?
The .offset() setter method allows us to reposition an element. The element's position is specified relative to the document.
0
27 / 28 / 16
Регистрация: 18.10.2015
Сообщений: 187
18.11.2015, 02:55
Относительно документа вы же wrap задаете
CSS
1
margin: 100px
, а так как input лежит внутри wrap то и он сдвигается в документе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2015, 02:55
Помогаю со студенческими работами здесь

undefined string offset - почему так???
Вопрос: есть текстовый файл. Содержимое читается в переменную, каждый фрагмент заканчивается символом &quot;|&quot;. То есть...

Почему параметр offset в fseek не перемещает указатель?
Есть код # include &lt;stdio.h&gt; # include &lt;fcntl.h&gt; # include &lt;io.h&gt; #pragma warning(disable : 4996) int main() { ...

Почему в Read у FileStream offset это смещение в байтах?
Почему в Read у FileStream offset это смещение в байтах, а не в других единицах, например в индекса? Добавлено через 2 минуты Какие...

Почему Notice: Undefined offset: 5 in C:\xampp\htdocs\simplest_files1.php on line 8 ?
Ребята, что-то у меня такое странное=-O вообще странное=-O=-O Вот запускаю свой код, вот он: &lt;?php $names1 =...

Почему delete не устанавливает автоматически указатель в NULL?
Почему delete не устанавливает автоматически указатель в NULL?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru