图片如果较小则拉伸,如果较大则收缩,并且居中显示。
图片如果较小则拉伸,如果较大则收缩,并且居中显示。
我有一个高度固定、宽度可变且溢出隐藏的div:
.img-container { height: 400px; width: 50%; overflow: hidden; }
还有尺寸大小不一的图片:比容器小、更宽或更高。
我需要的是:
- 在需要时拉伸图片(垂直或水平)以填充容器
- 拉伸时保持宽高比
- 在图片较大时(溢出隐藏)将其居中(垂直和水平方向)
我在这里创建了一些示例:https://jsfiddle.net/sh6f5nfh/
.img-container { height: 200px; width: 50%; overflow: hidden; background: yellow; margin-bottom: 5px; }
编辑:
这个解决方案解决了图片比容器更宽的问题:https://stackoverflow.com/a/3302072/740394。但还有一些情况没有回答到这个问题:(例如:更小的图像;宽度相同但较短;更高的图像;...)
出现的原因:需要实现一个图片居中并且根据容器的大小,当图片较小时进行拉伸,当图片较大时进行缩小的效果。
解决方法:使用CSS样式来实现,通过设置容器的大小和位置,以及图片的大小和位置,通过transform属性来实现居中效果。
实现代码如下:
CSS样式:
.img-container{ width: 300px; height: 300px; position: relative; overflow: hidden; } .img-container img{ position: absolute; top: 50%; left: 50%; width: auto; height: auto; min-height: 100%; min-width: 100%; transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); }
HTML代码:
可以在下面的链接中找到完整的示例:
https://jsfiddle.net/op4f8ad0/
问题原因:出现这个问题的原因是因为在不同的浏览器中,图片的显示方式不一致。有些浏览器会自动拉伸图片以填充容器,有些浏览器则会将图片缩小以适应容器。
解决方法:可以使用CSS的object-fit
属性来解决这个问题。如果希望图片在容器中居中显示并保持原始比例,可以使用object-fit: contain;
。如果希望图片填充整个容器并裁剪掉多余部分,可以使用object-fit: cover;
。
对于不支持object-fit
属性的浏览器(如IE11和Edge),可以使用Polyfill来实现相同的效果。Polyfill是一个用于补充不支持某些新特性的浏览器的脚本或插件。可以在GitHub上找到一个针对object-fit
属性的Polyfill:Polyfill for CSS object-fit property。
以下是一个示例代码,其中包含了一个图片容器的样式和多个图片示例:
.img-container { height: 200px; width: 50%; overflow: hidden; background: yellow; margin-bottom: 5px; } .img-container img { width: 100%; height: 100%; object-fit: contain; /* or cover */ }
<div class='img-container'> <img src="http://placehold.it/350x150" /> </div> <div class='img-container'> <img src="http://placehold.it/100x220" /> </div> <div class='img-container'> <img src="http://placehold.it/70x50" /> </div> <div class='img-container'> <img src="http://placehold.it/50x70" /> </div>
通过使用上述代码和解决方法,可以确保图片在不同浏览器中以所需方式进行拉伸或缩小,并居中显示在容器中。
在上述代码中,使用了两种不同的方法来处理背景图片的大小和位置问题。第一种方法是使用`.img-container`类,通过设置`background-size: contain`来确保背景图片按比例缩放,并保持其完整性。第二种方法是使用`.img-cover`类,通过设置`background-size: cover`来确保背景图片充满整个容器,并保持其比例。
问题的出现是因为在处理背景图片时,需要考虑图片的尺寸与容器的尺寸之间的关系。如果图片的尺寸较小,则需要拉伸图片使其填满容器;如果图片的尺寸较大,则需要缩小图片以适应容器。同时,为了使图片在容器中居中显示,还需要设置`background-position: center center`。
解决方法是使用CSS的`background-size`属性来控制背景图片的大小,通过设置`contain`或`cover`来达到目的。其中,`contain`会按比例缩放图片,使其完整地显示在容器内部;`cover`会拉伸或缩小图片,使其充满整个容器。通过设置`background-position: center center`来使图片在容器中居中显示。
通过以上的方法,可以实现背景图片的自适应大小和居中显示,无论图片的尺寸与容器的尺寸如何。这样可以保证网页在不同设备上的显示效果一致,并提升用户体验。
更多关于`background-size`属性的信息可以参考http://www.w3schools.com/cssref/css3_pr_background-size.asp。