javascript - 当图像都缩放时,如何正确计算图像并将其放置在另一个图像的顶部 - 跨浏览器?

标签 javascript html mobile-website

我有一个基础图像,上面有项目。如果用户禁用其中一项,则该项目应显示为已禁用。为了解决这个问题,我使用了禁用项目的第二张图像(png)并将其放置在背景图像上方的正确位置。

当没有缩放时,这在所有浏览器上都能完美运行。

当存在缩放时(例如,在移动浏览器中,图像为原始大小的 40%),此仅适用于 Firefox。 Firefox 总是将图像放置在正确的位置,覆盖下面的项目。

其他浏览器(Android 上的 Chrome、iOS 上的 Safari)始终会偏离 1-2 像素,具体取决于缩放级别。所以您可以看到下面的一些内容。

我该如何做到这一点才能跨浏览器工作?

var heightRatio = bgOffsetHeight / originalHeight;
var widthRatio = bgOffsetWidth / originalWidth;

//Place the disabled items
for ( var i = 0; i < disableds.length; i++ )
{
    var disabled = disableds[ i ];

    /**
     * I also tried with "parseInt", but it still doesn't work.
     * 
     * originalLeft/Top/Width/Height are the values saved in 
     * JavaScript when the page is first loaded before everything
     * is scaled.
     */
    disabled.style.left = ( widthRatio * disabled.originalLeft ) + "px";
    disabled.style.top = ( heightRatio * disabled.originalTop ) + "px";
    disabled.style.width = ( widthRatio * disabled.originalWidth ) + "px";
    disabled.style.height = ( heightRatio * disabled.originalHeight ) + "px";

    //Make visible
    disabled.style.visibility = "visible";
}

最佳答案

您的背景使用白色还是其他纯色?然后您可以尝试以下操作:在 bg 部分上放置一个空 div,然后应用 background-color: rgba(255, 255, 255, .5) 例如。这应该会给你同样的效果,而且它会节省大量额外的图像。但只有当“你的背景的背景”是纯色时才有效。

关于javascript - 当图像都缩放时,如何正确计算图像并将其放置在另一个图像的顶部 - 跨浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055077/

相关文章:

javascript - $监视动态创建的对象新属性

javascript - 为什么 javascript 不响应这个?

javascript - 请稍等 javascript、css 中的加载器,

jquery - 检查几个元素的高度,如果高度 > x,则添加类

ionic-framework - 如何从渐进式网络应用程序中获取设备信息

javascript - 在动态 templateUrl 指令中使用 promise

javascript - 使用 E4X 查找 XML 列表中的不同值

javascript - Iframe 的文档未定义或为空

css - 触摸/点击其他元素时如何删除 Framework7 移动网络应用程序上突出显示的文本?

android - 在 android 中加载我的 Cordova 应用程序时显示 URL?