在div中包含图像?

var*_*tis 32 css image

我想将图像包含在250 x 250 div中,迫使图像调整大小但不拉伸.我怎样才能做到这一点?顺便说一句,图像通常会大于div本身,这就是调整大小的原因.

<div id = "container">
  <img src = "whatever" />
</div>

#container { width:250px; height:250px; border:1px solid #000; }
Run Code Online (Sandbox Code Playgroud)

这是一个有人可以编辑的jsfiddle:

http://jsfiddle.net/rV77g/

Oli*_*ver 36

使用最大宽度和最大高度.它将保持纵横比

#container img 
{
 max-width: 250px;
 max-height: 250px;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/rV77g/

  • +1 用于保持方面。但是,当图像较小时不会缩放它。 (2认同)
  • @TheKaneda:这是一个好点.如果需要,应修改代码以包括最小宽度和最小高度 (2认同)

pti*_*tim 35

object-fit,表现得像background-size解决上下缩放图像以适应的问题.

object-fit CSS属性指定如何将替换元素的内容拟合到由其使用的高度和宽度建立的框中.

https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit

使用所有对象适合选项渲染的图像的快照

.cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

浏览器支持

没有IE支持,Edge中的支持从v16开始,仅适用于img元素:https://caniuse.com/#search=object-fit

bfred-IT /对象配合图像填充工具都非常好,我在IE11上Browserstack测试:演示.


使用SVG中的图像替代不使用polyfill

对于Edge pre v16和ie9,ie10,ie11:

您可以使用CSS object-fit和裁剪任何图像object-position.但是,这些属性仅在最新版本的MS Edge以及所有其他现代浏览器中受支持.

如果您需要在Internet Explorer中裁剪和缩放图像并向IE9提供支持,您可以通过将图像包装在一个,并使用viewBoxpreserveAspectRatio属性来执行操作object-fitobject-position操作来实现.

http://www.sarasoueidan.com/blog/svg-object-fit/#summary-recap

(作者彻底解释了这项技术,在这里复制细节是不切实际的.)


小智 13

你必须像这样设计图像

#container img{width:100%;}
Run Code Online (Sandbox Code Playgroud)

和隐藏溢出的容器:

#container{width:250px; height:250px; overflow:hidden; border:1px solid #000;} 
Run Code Online (Sandbox Code Playgroud)

  • 投票赞成有一个解决方案,如果太小,也会扩大图像. (3认同)
  • 投票赞成`overflow:hidden` (3认同)