当前位置: 首页 > 面试题库 >

使用宽高比填充图像的div

仉俊能
2023-03-14
问题内容

是否有可能用图像 填充 div,使得至少一个图像尺寸为100%,另一个尺寸与div相比更宽或相等,同时还要考虑图像的长宽比。

一个示例可以使用这些类widetall如下所示:

<div class="tall">
  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Klaproos.jpg/266px-Klaproos.jpg"/>
</div>

<div class="wide">
  <img src="https://groenevrijdag.files.wordpress.com/2013/11/klaproos2.jpg"/>
</div>



div {
  width: 400px; height: 400px;
  display: block;
  overflow: hidden;
  border-radius: 50%;
  display: inline-block;
}
div.tall img { width: 100%;  margin-top: -50%; }
div.wide img { height: 100%; margin-left: -50%; }

我正在寻找一种纯HTML +
CSS解决方案,该解决方案适用于响应矩形(不一定是正方形)的div。由于这个特殊原因,Javascript会很痛苦,因为需要确定每次调整大小时宽度或高度是否应为100%。服务器端甚至都不是一个选择。

为此是否存在纯HTML + CSS解决方案?

编辑
从一开始就应该对此有所了解,对此感到遗憾:(我不是在寻找背景图像解决方案,因为它不允许图像的base64-inhtml表示。此外,我认为背景图像在语义上是不同的来自<img>


问题答案:

考虑使用CSS object-fit属性。

5.5。调整对象大小:object-fit 属性

该object-fit属性指定如何将替换元素的内容装配到通过其使用的高度和宽度建立的框中。

这是两个值:

cover

确定替换内容的大小,以在填充元素的整个内容框时保持其长宽比。

contain

替换后的内容的大小可保持其纵横比,同时适合元素的内容框。

因此,cover图像将保留其纵横比并覆盖所有可用空间。当然,这意味着很多图像可能会在屏幕外裁剪。

随着contain纵横比也保持,但图像进行缩放以适应箱内。这意味着图像的左右两侧或顶部和底部可能会有空白。



 类似资料:
  • 我已经尝试了上面问题中的其他东西,但我不能得到我想要的结果(状态栏下面的背景图像)。我做错了什么?以下是重要的整个源代码(我排除了样板) PS:我想保留状态栏。我想要的是像链接问题的截图:全屏图像和图像上方的半透明状态栏。如果我将背景图像设置为根布局,我会得到我想要的结果,除了图像纵横比没有保持。见下图。 舱单 这种布局奏效了。

  • 我有一个。的数据是从服务器请求的。 以下是中的项布局: 我从服务器请求数据,获取图像url并将图像加载到 适配器中有方法的代码 图像大小为。我在我的Nexus4上运行我的应用程序。图像填充宽度,但高度不缩放。不显示整个图像。 我如何解决这个问题?

  • 问题内容: 基本上,我想上传图像(已排序)并将其按比例缩小到某些限制,例如最大宽度和高度,但要保持原始图像的纵横比。 我没有在服务器上安装Imagick-否则这很容易。 一如既往地提供任何帮助。谢谢。 编辑:我不需要整个代码或任何东西,只是朝着正确的方向推进将是很棒的。 问题答案: 我为完成的另一个项目编写了这样的代码。我已在下面复制了它,可能需要修补一下!(它确实需要GD库) 这些是它需要的参数

  • 我找到了这条线索-如何拉伸图像以填充 我有一个具有一定大小的div和其中的图像。无论图像是横向还是纵向,我都想始终用图像填充div。图像是否被切断也没关系(div本身隐藏了溢出)。 因此,如果图像是纵向的,我希望宽度是100%,高度是自动的,所以它保持成比例。如果图像是横向的,我希望高度为100%,宽度为自动。听起来很复杂对吧? 因为我不知道怎么做,我只是简单地创建了一个我的意思的快速图像。我甚至

  • 我的图像滑块不是我想要的方式。 除非我的浏览器窗口很小,否则图像不会填满容器的整个宽度。当我的窗口较大时,图像的右侧有一个空白,而不是图像填满整个宽度。 这是我的代码: 和CSS:

  • 问题内容: 我正在使用Bootstrap创建轮播,我的图像很大,因此当屏幕小于图像时,不会保持该比例。 我该如何改变? 这是我的代码: 我需要图片适合100%的宽度,但要保持其500px的高度(我认为是500px),这意味着在较小的屏幕上我们看不到图片的最左侧和最右侧。 我尝试将图像包含在div中并添加 但这不起作用 谢谢! 问题答案: 问题在于引导CSS: 设置图像不会超过视口。您需要在CSS上