javascript - 当用户放大或缩小时防止背景图像缩放

标签 javascript jquery html css image

我有这个类似光栅的透明背景叠加层:link to image <-- 尝试缩小浏览器以查看效果

当放大或缩小时(尤其是在移动设备上经常发生这种情况),图像往往看起来脏兮兮的和丑陋的。有没有办法让这个背景图像在屏幕上的大小始终为 10 x 10 像素,无论页面如何缩放,所以它总是看起来很清晰?

我做了一些搜索,发现这可能是一项艰巨的任务。如果这是不可能的:有没有办法改变缩放过滤器,使图像在缩小或放大时看起来更好?

最佳答案

在高分辨率显示器上,就像移动设备的显示器一样,​​由于小尺寸屏幕上的高分辨率导致高像素密度,您总是会看到模糊的效果。

有一个解决方法可以解决这个问题:

  • 创建双倍大小的背景图像:您的图像是 10px 10px,创建一个 20px 20px 的图像。

  • 使用所需大小应用背景图像:background-size: 10px 10px;

有了这个技巧,当在高分辨率显示器上放大或查看图像时,图像将不再显得模糊。

根据评论中的要求,这里是使背景大小适应缩放的代码:

JavaScript :

if (window.addEventListener){           
    window.addEventListener('resize', setBackground, false);
} else {
    window.attachEvent('onresize', setBackground);
}

function setBackground(){
    document.body.style.backgroundSize =
        (((( window.screen.width / ( window.screen.width / getImageWidth() )) / 10) > 1 ) ? (( window.screen.width / ( window.screen.width / getImageWidth() )) / 10) : 1) + "%";
}

function getImageWidth(){

    var imageSrc = document
                    .body
                     .style
                      .backgroundImage
                       .replace(/url\((['"])(.*?)\1\)/gi, '$2')
                        .split(',')[0];

    var image = new Image();
    image.src = imageSrc;

    var width = image.width;

    return width;

}       

HTML:

<body onLoad="javascript:setBackground();" style="background: url(bkg.jpg) repeat;">

关于javascript - 当用户放大或缩小时防止背景图像缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781163/

相关文章:

javascript - 结合两个 html 选择与 jquery

javascript - JS For 循环在调用函数后提前停止

javascript - jQuery - 在代码行之前查找特定元素

javascript - sendgrid 的 typescript 定义

javascript - 我如何实现像 jQuery 那样的链接模式?

javascript - 在字符串中搜索字符串的所有实例

javascript - 标签容器调整大小后如何获取真实标签的宽度

javascript - 单击时显示下拉列表

html - 是否可以修复长 html huxtable 的头部?

html - 在 div 内使用特定类设置段落样式