JavaScript:获取以像素为单位的背景位置

标签 javascript css animation background-position

我在开发 JavaScript 动画库时遇到了一个问题:使用此默认函数通常以像素返回所有值:

window.getComputedStyle(element).getPropertyValue(property);

但是,当像这样获取 background-position 的值时:

window.getComputedStyle(element).getPropertyValue('background-position');

结果是50% 50%(背景位置:居中)。如何将值转换为像素?我写了下面的函数,但它给了我错误的结果,原因是背景位置的百分比也与图像大小有关。

var pixelsX = (parseFloat(percentX) / 100 * element.offsetWidth) + 'px';
var pixelsY = (parseFloat(percentY) / 100 * element.offsetHeight) + 'px';

我也无法使用 Image() 获取大小,因为计算必须实时进行,我不能等待图像加载。

谢谢!

最佳答案

我实际上确实尝试过您的代码并且它有效... 这不是准确的尺寸吗? 我在不同的屏幕尺寸上检查过它,它看起来很准确。

请看:

var demoDiv = document.getElementById('divDemo');
var demoCalc = window.getComputedStyle(demoDiv).getPropertyValue('background-position');
var pixelsX = (parseFloat(demoCalc) / 100 * demoDiv.offsetWidth) + 'px';
var pixelsY = (parseFloat(demoCalc) / 100 * demoDiv.offsetHeight) + 'px';
console.log(demoCalc);
console.log(pixelsX);
console.log(pixelsY);
body {height: 100vh; width: 100vw; overflow: hidden}
#divDemo {
  height: 100%; width: 100%;
  background-image: url(https://images.unsplash.com/photo-1554056588-6c35fac03654?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=400&q=80);
  background-position: 50% 50%;
  background-repeat: no-repeat;
}
<div id="divDemo"></div>

关于此主题的更多信息 here

关于JavaScript:获取以像素为单位的背景位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908851/

相关文章:

javascript - 移除底部li时自动在底部制作其他li

javascript - 在 bxslider 中随机显示 6 个元素形成 70 个列表

c++ - 如何在OpenGL中处理纹理动画?

Javascript 更改背景颜色功能不起作用

javascript - d3.js - 带 slider 的圆形动画

javascript - JQuery 存储 for 循环中的值?

javascript - 带鼠标悬停 javascript 的链接菜单

javascript - 未找到 Primereact 导入

javascript - 如何使用 React Native 在 if 条件内处理 Prop 导航

CSS、Internet Explorer 和神奇的 !ie