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

用于使图像响应包含元素的宽度和可见高度的CSS

凌啸
2023-03-14

我需要图像采取容器的整个宽度,除非结果的高度大于可用容器的视口高度。

基本上,我希望图像是响应性的,但它应该仍然适合屏幕。如果它不适合屏幕,它应该缩小,水平居中,最好在它的侧面添加黑色瓷砖。

当前,我的CSS类看起来是这样的:

.img-responsive{
  display: block;
  max-width: 100%;
  min-width: 100%;
  height: auto;
}

我试着在图像或专用容器上使用max-height,但纯CSS似乎无法实现此功能

澄清:

  1. 我事先不知道图像的尺寸,所以不能将它们放入一个预设大小的容器中。
  2. 基本上,我的目标是使图像始终在屏幕上完全可见(如果滚动到图像),并占据尽可能大的表面。

下面是一个更详细的例子:

假设我有一个包含大量内容的可滚动容器。容器占用了整个视区宽度(假设是500px),容器的可用可见高度是整个视区高度减去一个navbar高度(假设是1000px)。

我无法预先知道容器的可见尺寸是多少,因为它总是可以改变的。

容器里面有任何东西,文本,图像等等。

现在,对于给定的图像,以下是可能的场景:

  • 如果图像为500x800,则应按原样显示,因为它占用了整个可用宽度,且高度不大于容器的可见高度。
  • 如果图像为500x2000,则应将其缩放为250x1000,并水平居中。这将占用整个可见容器的高度,并保持图像的纵横比
  • 如果图像为250x300,则应将其缩放为500x600,占用整个可用宽度
  • 如果图像为200x500,则应将其缩放为400x1000,占用整个可用高度
  • 如果图像为1000x1000,则应将其缩放为500x500,占用整个可用宽度

这里有一个JSFiddle解释这个问题

共有1个答案

明财
2023-03-14

我建议不要为此使用IMG标记。而是使用div标记,然后使用背景图像属性。下面是这方面的代码,将容器大小设置为您喜欢的任何大小:

<div id="container"></div>

<style>
width: 500px;
height: 500px;
background-image: url('your url');
background-size: contain;

</style>

background-size:contain是最好的方法。它将图像缩放到div中图像所能达到的最大值,而不会使其大于其本机大小。希望这有帮助

编辑:忘记添加,如果您希望它在容器的中心,这样当图像不适合容器的全部大小时,它周围有空白,您可以使用css代码background-position:center center;

 类似资料:
  • 如何在jQuery中获取图像的高度和宽度,如果我使用img与类"img响应",并且没有给出任何高度,宽度,最大高度,最大宽度等。 我不希望图像的真实高度和宽度,我们可以从getHeight和getWidth获得,但我想要确切的高度和宽度,我可以在移动浏览器中看到,我看到小高度和宽度,在台式机或笔记本电脑中看到更大的高度和宽度宽度。 这是桌面视图 这是移动视图 我想知道我的屏幕有多少像素被那个图像覆

  • 问题内容: 当我使用Chrome开发人员工具检查定位标记的大小时,它会向我显示第一个元素和第二个元素。 我想知道为什么它不包含包含元素的高度和宽度以及它是如何计算的。 问题答案: 在CSS 2.1规范说 框内容区域的尺寸(内容宽度和内容高度)取决于几个因素:生成框的元素是否设置了“宽度”或“高度”属性,该框是否包含文本框或其他框,是否框是一个表格,等等。框的宽度和高度将在有关可视格式模型详细信息的

  • 问题内容: 除了使用ImageIO.read来获取图像的高度和宽度外,还有其他方法吗? 因为我遇到了锁定线程的问题。 此错误仅在Sun应用服务器上发生,因此我怀疑这是Sun错误。 问题答案: 这很简单方便。

  • 我有一个幻灯片类的东西,图像将尽可能扩大,但不会超过视口的宽度或高度。基本上。 我想让这些图像具有响应性,因为“尽可能大”的手机和超大的桌面是完全不同的。我无法使用<代码> 我从: 但这并不像屏幕的方向那么简单,因为实际涉及的纵横比可能会变得非常奇怪,无论是视口(非常高的手机、浏览器工具栏等)还是图像本身;同一张图像可能在一个屏幕上受到宽度限制,但在另一个屏幕上受到高度限制。我想我可以编写一个解析

  • 问题内容: 为什么下面的代码返回高度:-1,这意味着高度未知。如何获得图像的高度? 问题答案: 使用ImageIO.read(URL)或ImageIO.read(File)代替。加载时它将阻塞,返回后将知道图像的宽度和高度。 例如 或者,MediaTracker向由异步加载的映像中添加A ,Toolkit然后等待其完全加载。

  • 问题内容: 我刚刚在Chromium上看到了 在或的情况下,我无法将元素的大小调整为小于其初始高度的高度。 在或的情况下,无法将元素的大小调整为小于其初始宽度的宽度。 我已经阅读了w3c规范,我想问题是因为这样的: 用户代理 可以 将调整大小的范围限制在适当的范围内,例如介于元素的 原始格式化大小 之间,并且必须足够大以包含所有元素的内容。 即使Chrome应用了以上段落,有没有办法做到这一点?