如何使背景图像适合所有屏幕尺寸?

Posted

技术标签:

【中文标题】如何使背景图像适合所有屏幕尺寸?【英文标题】:How to fit background image in all screen sizes? 【发布时间】:2022-01-21 23:51:41 【问题描述】:

我的背景图片有问题。不知何故,在大屏幕上,头部被切断以适应屏幕。有没有办法确保无论屏幕大小如何,始终呈现 100% 的图片? background-size 的初始属性是cover,但是当以这种方式设置时,图像的顶部会被切割以适合容器。当我按照下面将背景大小更改为 100% 100% 时,我得到了我想要的结果,但图像的质量受到了影响。有没有办法解决这个问题。我审查了大多数与背景图像相关的文档,但没有一个能给我想要的结果。 html 和 body 的高度/宽度都设置为 100%。

提前感谢您的帮助。 狮子座

.main .masthead 
    min-height: 100%;
    padding-top: 7.5rem;
    padding-bottom: 7.5rem;
    text-align: center;
    color: #fff;
    background: -webkit-gradient(linear, left top, left bottom, from(rgba(92, 77, 66, 0.8)), to(rgba(92, 77, 66, 0.8))), url(/_next/static/media/dr.cut_thebarbershow_blue.4a28589b.jpg);
    background: linear-gradient(to bottom, rgba(92, 77, 66, 0.8) 0%, rgba(92, 77, 66, 0.8) 100%), url(/_next/static/media/dr.cut_thebarbershow_blue.4a28589b.jpg);
    background-repeat: no-repeat;
    background-attachment: scroll;
    background-position: center center;
    background-size: 100% 100%;
    z-index: 1;
    width: 100vw;

sandbox

【问题讨论】:

我想你最好的选择是留下background-size: cover;并根据图像更改位置background-position: center top 来自 MDN 站点:Cover 在不拉伸图像的情况下尽可能大地缩放图像。如果图像的比例与元素不同,则会垂直或水平裁剪它,以便没有空白空间。 我会说最好的选择是将其保留为 cover 并更改 background-position 否则,为移动设备使用不同的图像。 感谢@MattHamer5 抽出宝贵时间。它不起作用 【参考方案1】:

最好在你的主 CSS 文件中有以下设置,以默认删除所有周围的空格

body,
::after,
::before 
  box-sizing: border-box !important;
  padding: 0px !important;
  margin: 0px !important;
然后考虑以下身体样式:

body 
  background-repeat: no-repeat;
  background-size: cover;
  background: -webkit-gradient(linear, left top, left bottom, from(rgba(92, 77, 66, 0.8)), to(rgba(92, 77, 66, 0.8))),
    url(/_next/static/media/dr.cut_thebarbershow_blue.4a28589b.jpg);
  background: linear-gradient(to bottom, rgba(92, 77, 66, 0.8) 0%, rgba(92, 77, 66, 0.8) 100%),
    url(/_next/static/media/dr.cut_thebarbershow_blue.4a28589b.jpg);

如果您的图像质量下降,请下载您的图像并使用 Photoshop 或其他工具来保持图像质量。

【讨论】:

【参考方案2】:

为了使背景图像适合屏幕大小,我们可以设置 background-size 属性来包含。将背景大小设置为包含;它告诉浏览器图像缩放以适应内容区域而不会丢失其纵横比

要了解更多信息,请参阅提供的链接: https://www.bitdegree.org/learn/responsive-image#setting-background-size-to-fit-screen

【讨论】:

嗨@pooja 感谢您花时间向桑杰解释我已经尝试了你们推荐的所有方法,但它不起作用。我设置了一个沙箱来显示问题,也许它可以让您更好地了解问题。再次感谢kids8.sse.codesandbox.io【参考方案3】:

您应该在媒体查询中使用 cover 或 auto,这样它将根据屏幕尺寸覆盖整个区域。

background-repeat:no-repeat;
background-size:cover;

【讨论】:

非常感谢您抽出宝贵时间,我已经尝试了您推荐的方法,但效果不如预期,我添加了一个沙箱链接,以便您可以在大屏幕上看到问题。 kids8.sse.codesandbox.io再次感谢

以上是关于如何使背景图像适合所有屏幕尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

使网站背景图像适合屏幕大小

所有 iOS 屏幕尺寸的启动屏幕图像尺寸

如何使布局适合屏幕尺寸

适用于所有屏幕尺寸的 iOS 全屏背景图像

CSS 表格列宽不适合某些屏幕尺寸

Xcode - 向 UITableView 添加约束,使其适合所有屏幕尺寸