javascript - 获取元素坐标

标签 javascript html css animation

我需要一些帮助。 首先,这是我游戏中的一个小演示代码:https://jsfiddle.net/MiloSx7/a0dn9a4f/2/

动画思路:收集硬币后将硬币缩放到2x,然后慢慢移动并逐渐缩小比例到显示硬币库存统计的图像所在的位置,invLocation是的ID动画应该结束的元素。它从当前的coinId X和Y开始 是否有可能以某种方式获取 invLocation 的 X 和 Y,以便我知道我应该告诉动画移动到哪里?

最佳答案

您可以使用 JQuery position() 和 offset() 方法执行此操作。

const spawnTime = 10000;

var coin = 0;
var intervalId = '';

var coinDiv = $('#coinDiv');
var coinImg = $('#coinImg');
var invDiv  = $('#invDiv');
var invId   = $('#inventoryId');
var invImg  = $('#invLocation');


coinImg.on('click', collect);
intervalId = setInterval(setLocation, spawnTime);


function setLocation() {
  var x = parseInt( Math.random()*(80-20+1) ) + 20;
  var y = parseInt( Math.random()*(80-20+1) ) + 20;

  coinImg.animate({
    opacity: 1
  }, 3000,
  function() {
    coinImg.css('top', x+'%');
    coinImg.css('left', y+'%');
    coinImg.css('display', 'initial');

    setTimeout( () => coinImg.animate({ opacity: 0 }, 3000), 6000);
  });
}

function collect() {
    clearInterval(intervalId);

  coinImg.stop();
  coinImg.css('opacity', 1);

  /* Increment coin counter */
  coin++;
  invId.text(coin);

  /* In order to disable multiple clicks */
  coinImg.css('pointer-events', 'none');

  /* Double the size */
  coinImg.css('width', '128px');
  coinImg.css('height', '128px');

  /* Animate and return to normal */
  coinImg.animate({
        width:  '32px',
        height: '32px',
        left:   invImg.offset().left + 'px',
        top:    invImg.offset().top  + 'px'
    }, 1500,
    function() {
      coinImg.css('pointer-events', 'auto');
      coinImg.css('display', 'none');
      coinImg.css('width', '64px');
      coinImg.css('height', '64px');

      intervalId = setInterval(setLocation, spawnTime);
    }
  );
}

工作示例:https://jsfiddle.net/wz4q9w69/

关于javascript - 获取元素坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47056800/

相关文章:

javascript - Sequelize 查找软删除的行

Javascript 在传递的术语上隐藏/显示 div

html - 如何在 <button> 之后排列 <span> 内的文本

html - 在 anchor 文本上保留下划线,但不在 anchor 中的 Font Awesome 图标上

google-chrome - -webkit-filter 的 hue-rotate 在 chrome 中似乎没有产生正确的结果

javascript - Django 模板语言 HTML 过滤器

javascript - 让文本围绕可以由用户移动的对象流动

html - 在 Doxygen 中调整导航树面板的大小

javascript - 使用 typeahead.js 搜索数据并使用 ajax 检索?

jquery - 我有两个操作链接和一个模式弹出窗口。有什么方法可以知道点击了哪个操作链接