javascript - 从 CSS 动画元素获取顶部/右侧值

标签 javascript html css

我试图从一个被 CSS 动画旋转的元素中获取 Top 和 Right 值,为此我使用了以下代码:

HTML:

<div id="ball1"> </div>

CSS:

@keyframes spin {
  0% {transform: rotate(0deg);}
  100% {transform: rotate(360deg);}
}

#ball1 {
    transform-origin: center right;
    animation: spin 2.5s linear 0s infinite forwards;

    position: relative;
    background-color: #7883f7;
    width: 10;
    height: 10;
    border-radius: 10px;
}

Javascript:

console.log(window.getComputedStyle(document.getElementById("ball1"), null).top);

console.log(window.getComputedStyle(document.getElementById("ball1"), null).right);

但是它返回 0px 的值,我想从 Right 和 Top 获取值,就像我手动设置它们一样(而不是通过变换动画)。

如果这不可能,是否有一种方法可以模拟“圆形”旋转并在不使用变换的情况下返回右/顶部值?

即: https://66.media.tumblr.com/fb22b61bcbca3785a515e86c2276451b/tumblr_inline_pmimnjEvbK1v6q8wn_1280.gif?fbclid=IwAR2zjgE0hfB8emWOg0f6TOcQb8DWGbEvu9IQOr92fMq4HmMKjiAQRQzLmI0

最佳答案

使用getBoundingClientRect() :

const ball = document.getElementById("ball");
setInterval(() => {
  const rect = ball.getBoundingClientRect();
  console.log(rect.top, rect.right);
}, 300);
@keyframes spin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); } 
}

#ball {
  transform-origin: center right;
  animation: spin 2.5s linear 0s infinite forwards;
  
  position: relative;
  background-color: #7883f7;
  width: 10px;
  height: 10px;
  border-radius: 10px;
}
<div id="ball"></div>

关于javascript - 从 CSS 动画元素获取顶部/右侧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54623843/

相关文章:

asp.net-mvc - AngularJS - 用户界面路由器 - MVC 5 - html5mode

jquery - 用于以不同尺寸的 div 显示产品的 css,如图案

javascript - 如何使用 Jquery 选择附加表的元素

javascript - 在不同数据选项之间循环迭代对象

javascript - 列表项背景颜色在 Ipad 上不会改变

javascript - 用 Greasemonkey 替换对象参数的值

html - 为什么相同高度和宽度的内联 block 元素本身不垂直对齐

javascript - jquery 单击链接

javascript - 不使用 Flash 实现与 ctrl+c 相同的 ctrl+x 行为

asp.net - 输入复选框描述单击不适用于 Mozilla 和 Internet Explorer 10