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

缩放图像以适合边框

陆宇航
2023-03-14
问题内容

是否有仅css的解决方案将图像缩放到边框(保持纵横比)?如果图像大于容器,则此方法有效:

img {
  max-width: 100%;
  max-height: 100%;
}

问题答案:

不,没有唯一的CSS双向方式可以做到这一点。您可以添加

.fillwidth {
    min-width: 100%;
    height: auto;
}

对于一个元素,使其始终具有100%的宽度,并自动将其高度缩放为长宽比, 反之:

.fillheight {
    min-height: 100%; 
    width: auto;
}

始终缩放到最大高度和相对宽度。为此,您需要确定纵横比是高于还是低于容器,而CSS无法做到这一点。

原因是CSS不知道页面的外观。它会预先设置规则,但只有在此之后,元素才会被渲染,并且您确切知道要处理的大小和比率。检测到该错误的唯一方法是使用JavaScript。

尽管您并不是在寻找JS解决方案,但如果有人需要,我还是会添加一个。用JavaScript处理此问题的最简单方法是根据比率差异添加一个类。如果框的宽高比大于图像的宽高比,请添加类“
fillwidth”,否则添加类“ fillheight”。

$('div').each(function() {

  var fillClass = ($(this).height() > $(this).width())

    ? 'fillheight'

    : 'fillwidth';

  $(this).find('img').addClass(fillClass);

});


.fillwidth {

  width: 100%;

  height: auto;

}

.fillheight {

  height: 100%;

  width: auto;

}



div {

  border: 1px solid black;

  overflow: hidden;

}



.tower {

  width: 100px;

  height: 200px;

}



.trailer {

  width: 200px;

  height: 100px;

}


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="tower">

  <img src="http://placekitten.com/150/150" />

</div>

<div class="trailer">

  <img src="http://placekitten.com/150/150" />

</div>


 类似资料:
  • 我有一个表单,允许用户上传图像。 加载映像后,我们对其执行一些缩放,以便在将其传递回服务器之前减小其文件大小。 为此,我们将其放置在画布上并在画布上进行操作。 这段代码将在画布上呈现缩放后的图像,画布大小为320 x 240px: ... 哪里有帆布。宽度和画布。高度是图像高度和宽度x,是基于原始图像大小的比例因子。 但当我使用代码时: ...我只得到画布上图像的一部分,在这种情况下是左上角。我需

  • 问题内容: 我正在尝试缩小美国地图。要么是我的SVG,要么是手动的。 这是我的代码中最简单的: 我已经尝试过类似的东西: 但是每次我在路径变量中添加任何内容时,我都会从D3的内部收到NAN错误。谢谢你的帮助! 问题答案: 关键问题是您的数据 已经被 投影。D3 geoProjections使用未投影的数据或成对的数据。WGS84基准中的数据。实质上,d3 geoProjection会采用球面坐标并

  • 问题内容: 在JavaScript / jQuery中,如何缩放固定宽度Div内的可变长度文本行,以使一行始终适合Div内(作为一行)? 谢谢。 问题答案: 这有点骇人听闻,但可以满足您的要求。 将其放置在页面底部,该位置将不会移动页面上的其他元素。 然后执行以下操作:

  • 如何设置视图以在地图框或传单中查看地图上的所有标记?就像谷歌地图API对? 例如:

  • 以下是CardView的XML代码: 我尝试对ImageView(和LinearLayout)的属性使用wrap_content,并尝试包含属性android: caleType="fitXY",但它没有帮助,似乎没有任何效果。 谁能帮我一下吗?我非常感谢您的每一句评论,也非常感谢您的帮助。