Позиции jQuery

#jquery #html #css

#jquery #HTML #css

Вопрос:

У меня проблема, которую я не мог понять, пожалуйста, помогите:

Я разработал html-страницу с изображениями и сделал их перетаскиваемыми с помощью справки jQuery UI, и я установил для этих изображений положение относительно и дал левый и верхний пиксели, вот ссылка на страницу http://ayyashsigns.com/lab/circles.html

Я установил:

  • позиция b1: style=»слева: 180 пикселей; сверху: -334 пикселей; …»
  • позиция b2: style=»слева: 233 пикселей; сверху: — 546 пикселей; …»
  • позиция b3: style=»слева: 422 пикселей; сверху: -350 пикселей; …»
  • позиция mainb: style=»слева: 93 пикселя; сверху: — 330 пикселей; …»

Проблема в том, что когда я запускаю

  • $(‘span #b1’).position().top Я получаю 293
  • $(‘span #b1’).position().left Я получаю 180
  • $(‘span #b2’).position().top Я получаю 81
  • $(‘span #b2’).position().left Я получаю 289
  • $(‘span #b3’).position().top Я получаю 277
  • $(‘span #b3’).position().left Я получаю 534
  • $(‘span#mainb’).position().top Я получаю 297
  • $(‘span#mainb’).position().left Я получаю 261

Почему вся эта разница, мне нужно получить программный доступ к изображениям с помощью jQuery. Кто-нибудь может мне это объяснить и как это исправить, чтобы указать точное местоположение изображений.

Вот ссылка снова: круги на моей странице

Заранее спасибо за любую помощь,

С уважением,

Ответ №1:

«Метод .position() позволяет нам получить текущую позицию элемента относительно родительского элемента со смещением».

Если вы хотите получить фактическое значение CSS, которое вы использовали, попробуйте использовать :

 $('span#b1').css('top');
  

Шай.

Комментарии:

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

2. Чтобы изменить позицию css, просто установите свойство css $(‘span#b1’).css(‘top’, ‘-350px’); Эта позиция в вашем исходном коде относится к исходному местоположению элементов.

Ответ №2:

Измените <p id="monitor"> на <div id="monitor"> и </p> не забудьте также изменить.

Добавьте это в свою таблицу стилей:

 body {
    margin: 0;
}

#content {
    position:relative;
}

#b1 {
    top: ##px;
    left: ##px;
    position:absolute;
}
  

Используйте position:absolute для всего вашего круга, найдите для него правильный верхний и левый пиксели. Он должен начинаться с верхнего левого края экрана для top:0px; left: 0px;

Теперь, когда вы используете $('span#b1').position().top его, он даст вам правильный пиксель.

К вашему сведению, .position вернет пиксель относительно родительского элемента, .offset вернет пиксель относительно документа.

Комментарии:

1. Мне нужна помощь с jQuery, после установки кругов в правильное положение, я хочу, чтобы какой-нибудь плагин или команда заставили jQuery вернуть круги в положение, в котором они были установлены, например. если пользователь переместил b1 из своей позиции в другую позицию, b1 медленно вернется в исходное положение.

2. Добавьте опцию возврата к вашему перетаскиваемому. вы можете установить скорость с помощью revertDuration . .перетаскиваемый({ revert: true, revertDuration: 1000 });

Ответ №3:

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

 $('span#b1 img').offset().top
  

Комментарии:

1. Я хочу, чтобы положение круга с помощью jQuery было похоже на стиль, как это сделать? Я в замешательстве, если я запускаю введенный вами код, он дает мне 442, а если я запускаю $(‘span#b1 img’).position().top, я получаю -40

Ответ №4:

Я думаю, что в этом случае для вас было бы лучше использовать position:absolute; на каждом из кругов и position:relative продолжать #content . Таким образом, вы получите правильное значение с position().top помощью и position().left .