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

Posted

技术标签:

【中文标题】您如何使用网站背景图像支持大屏幕分辨率?【英文标题】:How do you support large screen resolutions with website background images? 【发布时间】:2017-04-16 13:23:43 【问题描述】:

我有一个自己开发的网站,但我刚刚得到了一个人在 2560 x 1600 显示器上查看它的屏幕截图,这看起来有点荒谬。屏幕分辨率支持的合理上限是多少?我担心通过添加巨大的图像对加载时间产生负面影响。我该如何正确处理?

【问题讨论】:

我会创建不同大小的背景图像的多个版本,并使用媒体查询在视口宽度增加时应用它们。该站点显示桌面屏幕尺寸统计信息,以帮助您选择最大宽度gs.statcounter.com/… 您也可以尝试将图像放大 2 倍并将 JPG 压缩设置为 0% 以节省几个字节 filamentgroup.com/lab/compressive-images.html 【参考方案1】:

解决方案 1:最大宽度

使用具有以下 CSS 的容器 div:

#innerbody 
  width: 100%;
  max-width: 2000px;
  margin: 0 auto;

将所有 HTML 放入此容器中(将容器包裹在所有 HTML 周围),如下所示:

<body>
  <div id="innerbody">
  ... your page ...
  </div>
</body>

我还会在正文中添加一个漂亮的微妙背景颜色,以标记“页面”的结束位置,如下所示:

body background: #eee;
#innerbody background: #fff;

解决方案 2:屏蔽质量

如果您只担心(较差的)图像质量,您可以添加容器 div(来自解决方案 1)并使用此 CSS 覆盖阴影(对角线)。这个技巧通常用于低质量的全屏视频,但也适用于背景图像。

#innerbody 
  width: 100%;
  background: url(/hatch.png);


解决方案 3:媒体查询

有大屏幕吗?你会得到一个大图像。有小屏幕吗?你会得到一个小图像。听起来合乎逻辑,对吧?您可以通过使用媒体查询来实现这一点。像这样工作:

@media screen and (max-width: 500px) 
  body 
    background: url(small_image.jpg);
  

@media screen and (max-width: 1000px) and (min-width: 501px) 
  body 
    background: url(medium_image.jpg);
  

@media screen and (max-width: 2000px) and (min-width: 1001px) 
  body 
    background: url(big_image.jpg);
  

@media screen and (min-width: 2001px) 
  body 
    background: url(really_big_image.jpg);
  

对于每种屏幕尺寸,这些媒体查询中的一个将为 true。将提供该图像。

【讨论】:

【参考方案2】:

为了解决您的加载时间问题,一种选择是使用媒体查询,以便您可以根据访问者视口大小控制背景图像。例如

@media (max-width: 800px) 
  .div-with-background
        background-image: url("background-sm.jpg");
  


@media (max-width: 1200px) 
   .div-with-background
        background-image: url("background-md.jpg");
  


@media (min-width: 1201px)
   .div-with-background
        background-image: url("background-lg.jpg");
  

屏幕分辨率支持的合理上限是多少?

这取决于您的访问者。如果您使用 Google Analytics,您可以通过转到用户 > 技术 > 浏览器和操作系统并在“次要维度”下搜索“屏幕分辨率”来获取详细信息

希望这会有所帮助!

【讨论】:

以上是关于您如何使用网站背景图像支持大屏幕分辨率?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何对我的网站进行编码,以便我的 100% 宽度图像根据屏幕分辨率的变化调整大小?

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

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

屏幕尺寸分辨率问题

Javascript检测屏幕分辨率,更改css,相应裁剪图像