根据屏幕分辨率显示自定义背景图像

Posted

技术标签:

【中文标题】根据屏幕分辨率显示自定义背景图像【英文标题】:Displaying custom background images based on screen resolution 【发布时间】:2012-08-31 17:33:15 【问题描述】:

对于一个网站,我需要能够根据用户的屏幕分辨率动态显示背景图片。

即当页面开始加载时,在<head> 中加载一个小的javascript,它通过css 将页面的背景设置为http://example.com/backgrounds/beach_800x600,其中800 和600 是通过javascript 确定的屏幕分辨率。

我正在为最常见的屏幕分辨率创建各种调整大小的图像,以便大多数人的屏幕分辨率与现有图像完全匹配。如果没有完全匹配,例如,如果用户的屏幕分辨率为AxB,但没有现有图像,则将动态创建图像并将其大小调整为AxB,并提供服务。从那时起,分辨率为AxB 的任何人都将获得该图像。

我的问题是:

1) 这是一种安全的方法吗?即我不希望为自定义屏幕分辨率创建超过 50 个自定义大小的图像。我可以用这种方法留在那个球场吗?使用这种方法还有其他我应该注意的安全风险吗?

2) 我应该给它一个 50 或 100 像素的误差范围,所以如果有人的分辨率是 700x900,而我没有,但我有 600x800 或者我有 800x1000,那么我会提供那些现有的图像而不是而不是创造新的?如果是这样,我应该将边距设置为 100 像素还是有更好的数字?

【问题讨论】:

【参考方案1】:

通过使用 CSS3 媒体查询和 background-size 属性,除了与过时的浏览器兼容之外,几乎不需要 JS。

Here's a link 以及有关background-size 的详细信息。此属性允许您以各种方式缩放图像,而不管用户分辨率如何。有时这可能并不理想。

And so we have CSS3 Media Queries。有了这些,您可以针对某些分辨率(或大于和小于某些分辨率)并告诉浏览器您想相应地显示哪个图像(或者甚至如何显示它,无论是否使用background-size)。

【讨论】:

通过背景尺寸缩放图像会导致它看起来失真,是吗?对于媒体查询,问题仍然是我需要为最常见的分辨率调整大小,但如果用户的分辨率不在其中,那么我想动态地为它创建一个调整大小的图像 background-size 确实会导致图像失真。但是,假设您创建了 3 个背景图像;一种用于 800x600,一种用于 1024x768,一种用于大于 1024x768 的任何尺寸。如果您要根据媒体查询将background-size:cover 设置为每个相应的背景图像,则可以避免该问题。您的媒体查询应分别类似于:max-width: 800pxmax-width: 1024pxmin-width: 1025px @ClickUpvote 这并不能保证访问者会看到整个背景,因为仍然会出现一些样式,但我相信这是一个愉快的折衷方案,也是可行的方案。跨度> 【参考方案2】:

您可能不想为每个屏幕分辨率创建一个图像,并且您可能希望根据浏览器窗口大小而不是屏幕分辨率来创建图像。鉴于窗口几乎可以是任何大小,您可能需要重新考虑这一点。

这也可以使用 CSS3 媒体选择器轻松完成,而不是 JavaScript(尽管也可以使用 JavaScript 完成)。

有关媒体查询的一些信息,请参见此处http://webdesignerwall.com/tutorials/css3-media-queries

【讨论】:

我不想每次调整浏览器大小时都加载不同的图像,我可能会在页面加载开始时使用 window 然后选择另一个。

以上是关于根据屏幕分辨率显示自定义背景图像的主要内容,如果未能解决你的问题,请参考以下文章

您如何使用网站背景图像支持大屏幕分辨率?

c# winform背景图片超过屏幕分辨率怎么办

c# winform背景图片超过屏幕分辨率怎么办

iOS 8 - 启动屏幕文件的背景渐变

如何自定义设置屏幕分辨率?

win7屏幕分辨率总是自动切换