gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:00 25 4
gpt4 key购买 nike

我在开发 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com