当前位置: 首页 > 知识库问答 >
问题:

具有“自动”高度的100%宽度背景图像(2015)-跨浏览器

井礼骞
2023-03-14

我们问这个问题,因为这个2013年的线程(100-宽度-背景-图像-自动高度)的答案似乎不再起作用了。

  • 我需要一个响应的背景图像与100%的宽度和自动高度。
  • 我想根据屏幕大小使用媒体查询而不是Javascript提供不同的图像。
  • 如果它在不同的浏览器上工作就好了(至少Chrome/火狐)

使用以下代码:

<img src="image.jpg" style="width: 100%;">

图像显示正确,100%宽度和自动高度(参见此处:JSFIDDLE1),但在更改屏幕大小时,我无法替换图像的源代码,除非我使用Javascript。

因此,我正在努力在DIV上使用背景图像。

<div class="imageContainer1"></div>

并且,使用以下CSS,一切正常(至少在Chrome/Safari):

.imageContainer1 {
    content:url("image.jpg");
}

看这里JSFIDDLE2

但是...这似乎在火狐上不起作用!:-(因为“内容”属性似乎在火狐上不兼容。

所以我想使用“背景图像”属性,并找到一个与所有浏览器兼容的解决方案,但我正在努力设置100%的宽度和自动高度。

<div class="imageContainer2"></div>

.imageContainer2 {
    background-image: url("image.jpg");
    background-position: center top;
    background-size: 100% auto;
}

没有显示任何东西,但是如果你设置,例如:

height: 500px;

你将能够看到图片的一部分。

这是JSFiddle:JSFiddle3

我曾尝试使用:

background-size: cover/contain

但这不是我想做的,因为“封面”将允许图像从侧面伸出,而“包含”根本不允许图像伸出)。

这个噩梦有什么解决办法吗?

共有1个答案

陶富
2023-03-14

如果您不想大量使用媒体查询来更改背景图像,而对于您的小提琴,在我看来,您试图通过使用img标记使代码尽可能简单,就像您提到的:

如果它能在不同的浏览器上运行(至少是Chrome/Firefox),那就太好了

所以您可以在img标记中使用srcset属性,如下所示:

<img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" alt="image">

srcset

一个或多个字符串的列表,用逗号分隔,表示用户代理要使用的一组可能的图像源。每个字符串由以下内容组成:

  • 图像的URL,
  • (可选)空格后跟以下内容之一:
    • 宽度描述符,是一个正整数,后跟“w”。宽度描述符除以sizes属性中给定的源大小,以计算有效像素密度
    • 像素密度描述符,是一个正浮点数,后跟“x”

    如果未指定描述符,则为源分配默认描述符:1x。

    在同一srcset属性中混合宽度描述符和像素密度描述符无效。重复的描述符(例如,同一srcset中的两个源用“2x”描述)也无效。

    用户代理有权选择任何一个可用来源。这为他们提供了很大的回旋余地,可以根据用户偏好或带宽条件来定制他们的选择。

 类似资料:
  • 我目前正在为一家公司做一个移动登陆页面。这是一个真正基本的布局,但在标题下方有一个产品的图像,它将永远是100%的宽度(设计显示它总是从边到边)。根据屏幕的宽度,图像的高度显然会相应地调整。我最初用一个img(CSS宽度为100%),它工作得很好,但我意识到我希望使用媒体查询来为基于不同分辨率的不同图像提供服务-例如,同一图像的小、中、大版本。我知道你不能用CSS改变img src,所以我想我应该

  • 问题内容: 我目前正在为一家公司制作移动目标网页。这是一个非常基本的布局,但是在页眉下面有一个产品图片,该图片始终为100%的宽度(设计显示,该图片始终从一条边到另一条边)。根据屏幕的宽度,图像的高度显然会相应地进行调整。我最初使用img(CSS宽度为100%)来完成此操作,效果很好,但我意识到我想使用媒体查询根据不同的分辨率提供不同的图像- 假设尺寸较小,中等,例如,同一张图片的大版本。我知道您

  • 我试图设置一系列div的背景图像,每个都有自己固定的高度,并拉伸以填充宽度,即使顶部/底部有溢出被剪辑。我只是不想边缘有空白。 目前,我有:http://jsfiddle.net/ndKWN/ CSS

  • 我有一个图像叫做myImage。jpg。这是我的CSS: 出于某种原因,当我这样做时,myImage的宽度会延伸到整个屏幕上,但高度只会延伸到页面上其他所有内容的高度。所以如果我把一堆 在我的html页面,然后高度会增加。如果我的超文本标记语言页面只包含一个 那么背景图像的高度就是1的高度 我如何使我的背景图像的高度100%的屏幕,用户使用它来查看网页?

  • 问题内容: 我有一个名为myImage.jpg的图像。这是我的CSS: 由于某些原因,当我这样做时,myImage的宽度会延伸到整个屏幕,但是高度只会延伸到页面上其他所有位置的高度。所以如果我放一堆 在我的html页面中,然后高度会增加。如果我的HTML页面仅包含一个 那么背景图片的高度就是一个的高度 如何将背景图片的高度设为用户用来查看网页的屏幕的100%? 问题答案: 您需要将的高度设置为

  • 问题内容: 我想让主体具有浏览器高度的100%。我可以使用CSS吗? 我尝试设置,但不起作用。 我想为页面设置背景色以填充整个浏览器窗口,但是如果页面内容很少,我将在底部看到一个难看的白色条。 问题答案: 尝试将html元素的高度也设置为100%。 Body向其父级(HTML)寻求如何缩放动态属性,因此HTML元素也需要设置其高度。 但是,身体的内容可能需要动态更改。将最小高度设置为100%将实现