javascript - 获取背景图像的计算位置(以像素为单位)

标签 javascript html dom

我在 Stackoverflow 上看到这个问题的变体没有回答这个问题。

问题是背景图像是使用 % 或 center、left、top 等放置的。但我们真正想知道的是该定位是以像素为单位计算的。我不是问它在 CSS、内联样式或其他方式中设置了什么,而是浏览器计算位置的内容应该基于这些样式设置。

换句话说,如果一个 div 的宽度为 100px,我们将背景图像设置为距左侧 10%。我希望 javascript 返回 10 个像素,而不是 10%。

请不要使用 JQuery 或其他库,只需纯 javascript、html 和 DOM。

我已经看过: https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle

我想要这样的东西: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect ...但是对于背景图像。

就目前为止我寻找解决方案而言,这些功能。我们也尝试过获取 Node 属性,但我们仍在试验中。

谢谢。

最佳答案

我不知道有什么方法可以直接查询计算出的背景位置,但是您应该能够根据图像及其容器的尺寸来计算它。

我昨天遇到了这种情况(这就是我遇到这个问题的原因)。我想知 Prop 有以下条件的背景图像的计算垂直位置(以像素为单位):

  • 1198 的尺寸x 2246
  • 位于 center bottom
  • 在一个容器内 ( <header> ) 那是 600px高大100%宽度
  • 大小为 cover

我想出了以下公式:

var headerHeight = $("header").height(),
    headerWidth = $("header").width(),
    bgHeight = Math.round(headerWidth / 0.5333),
    bgBottom = headerHeight - bgHeight;

对于 bgHeight , 我将容器的宽度除以 0.5333因为这是源图像的纵横比 ( 1198/2246 ),所以将其四舍五入到最接近的整数。

例如,如果我的浏览器窗口是 1280px宽:

  • headerHeight = 600
  • headerWidth = 1280
  • bgHeight = ( 1280/0.5333 ) = 2400
  • bgBottom = 600 - 2400 = -1800

所以背景图片垂直位置的像素值为-1800px .

关于javascript - 获取背景图像的计算位置(以像素为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266058/

相关文章:

javascript - 使用 .createElement() 创建一个新的 <div>

javascript - ng-model 输入未在 View 中更新

javascript - 启用自动完成的输入类型密码。 val() 变成空白

javascript - 通过 id 获取最近的元素

jQuery 多个类在追加时丢失

php - 使用 DOM PHP 解析跨度类文本

javascript - react-native 使用绝对路径?而不是从 '../../something/X' 导入 X?

用于缩写重复访问同一标识符的 JavaScript 语法

javascript - HTML5 视频 canPlay 事件第二次不起作用

javascript - Angular 6 observables - 从 .subscribe() 函数中提取数据并在别处使用