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

将图像高度设置为容器高度并保持长宽比

史高阳
2023-03-14

有没有一种方法,只使用CSS,将图像的高度设置为其容器的高度,同时保持纵横比,允许宽度溢出和隐藏?这听起来有很多要求,但肯定有办法。我的意思是,我希望显示图像的完整高度,但如果宽度比容器允许的宽度宽(使用引导网格系统),那么只需溢出:隐藏。我将高度设置为100%,看起来很好,但图片从侧面挤压,以适合容器内,而不是溢出和被裁剪。通过将宽度设置为100%,它将填充容器。我认为这是使用容器作为标准的100%,而不是照片的纵横比。这就是我需要做的。

这就是我要做的:

html prettyprint-override"><div style="width:150px; height:150px; display:flex; flex-direction:column">
  <img src="http://i.imgur.com/RiX7XfW.jpg" alt="Banana" style="height:100%;width:auto;overflow:hidden">
</div>

TL;DR我需要保持图像的纵横比,将高度锁定到容器高度,让多余的图片溢出并隐藏,使我能够在填充容器的同时看到尽可能多的图片。

如果有办法以某种方式计算哪个维度更小并将其锁定到相关的容器维度,则会获得加分。

共有3个答案

段干楚青
2023-03-14

您可以将图像设置为容器的背景图像,而不是使用img标记嵌入图像。然后使用背景大小的组合:封面 和背景位置:中心 可以使图像与容器的高度匹配,同时保持原始图像的纵横比。“背景位置”(background position)属性将使图像居中,以便裁剪左右两侧。

使用速记,该代码如下所示:

<div style="background:url('http://i.imgur.com/RiX7XfW.jpg') center center / cover no-repeat; width:150px; height:150px; display:flex; flex-direction:column"></div>
张腾
2023-03-14

您是否建议在CSS中隐藏溢出?这是一个常规的默认度量值,你围绕它说话,就像你可能在回忆度量值一样。

不设置高度和设置宽度:100%是一种考虑纵横比的好方法,更关注全宽。因此,没有宽度规范的高度:100%可能是保持高宽比完整的最佳方法

姚雅珺
2023-03-14

如果使用图像标记,则不容易做到这一点,但如果使用CSS背景图像属性(或快捷方式背景),则

#wrap{width:300px;height:200px;margin:50px;overflow:hidden;}
  #imgDiv{width:1000px;height:1000px;background-image:url(http://placekitten.com/900/900); background-size:cover;}
html lang-html prettyprint-override"><div id="wrap">
  <div id="imgDiv">
  </div>
</div>
 类似资料:
  • 我有一个使用CSS flexbox缩放到可用高度的DIV。在这个DIV中,我想在两个维度上与DIV一起缩放图像。这意味着它应该被缩放以保持其长宽比,并且小于相应DIV维度的维度应该居中。 我可以使图像跟随DIV的宽度,但不能跟随高度。因此,肖像图像脱离DIV界限。 这里有一个jsFiddle来演示这个问题。

  • 问题内容: 使用CSS flex box模型,如何强制图像保持其纵横比? JS小提琴:http://jsfiddle.net/xLc2Le0k/2/ 请注意,图像会拉伸或收缩以填充容器的宽度。很好,但是我们也可以拉伸或缩小 高度 以保持图像比例吗? 的HTML 的CSS 问题答案: 对于img标签,如果您定义一侧,那么将调整另一侧的大小以保持纵横比,并且默认情况下,图像会扩展到其原始大小。 使用此

  • 问题内容: 我需要将元素的 宽度 保持为 高度 的百分比。因此,随着高度的变化,宽度也会更新。 通过为padding-top使用%值可以实现相反的效果,但以padding-left为百分比将是对象宽度的百分比,而不是其高度。 因此,使用这样的标记: 我想使用这样的东西: 为了确保根据盒子 的高度保持 盒子的 长宽比 。高度是可变的,因为它的百分比裕度-当窗口的高度改变时,盒子的高度也会改变。 我知

  • 问题内容: 目前,通过STYLE,我可以在和高度上使用和,反之亦然,但是我仍然不能将图像分别限制在一个特定的位置,无论是太宽还是太高。 有任何想法吗? 问题答案: 如果仅在图像上定义一维,则将始终保留图像长宽比。 图像是否比您喜欢的更大/更佳? 您可以将其放入DIV中,该DIV设置为图像所需的最大高度/宽度,然后设置“ overflow:hidden”。那将收获超出您想要的任何东西。 如果图像的宽

  • 问题内容: 我想在页面上居中放置宽度/高度未知的图像,同时确保它比页面大时会缩小(即使用/ )。 我尝试使用该方法,但是在Firefox中,对于用声明的元素中的所有元素均被忽略。有没有办法在不使用高度的情况下垂直居中可变高度元素? 我可以更改标记。JavaScript是可以接受的,但是我不能使用JQuery(或任何其他JS库)。 问题答案: 这应该证明可以很好地工作…不需要JavaScript :

  • 问题内容: 我想使一个组件占据Container的maximumAvailableHeight。例如,在下面粘贴的代码中,我将根框架定为800,600。我只想设置该框架的高度/宽度(并且我不想尝试对其子像素进行像素化)。如果运行此命令,则会看到UI对齐不良。 首先,我希望面板(位于根框架内)占据框架的100%的高度(在这种情况下,为800px减去用于绘制框架标题的空间)。 其次,在面板内部,我有一