如果图像高度超过图像宽度,通过裁剪其顶部和底部来垂直居中图像-仅使用CSS即可
If image height exceeds image width, vertically center image by cropping its top and bottom - possible with only CSS?
假设您事先不知道图像元素的高度和宽度,假设在图像高度大于图像宽度的情况下,您希望通过从顶部和底部裁剪相同数量的像素来垂直地将图像放在中间,以便新的图像高度与图像宽度匹配。例如,如果图像宽度为200px,高度为250px,则从其顶部和底部各裁剪25px。
下面是一个示例设置:
HTML:<div class = 'cell'>
...
<div class = 'image_container'>
...
<img ...>
</div>
</div>
CSS: .cell {
display: inline-block;
float: left;
/* width will be changed by use of '@media screen'.
Smaller browser window -> larger width */
width: 31%;
}
.image_container {
position: relative;
float: left;
width: 100%;
}
.image_container > img {
width: 100%;
}
是否有可能完成上述中心/裁剪操作仅使用CSS,还是有必要使用javascript/jquery ?
可以使用object-fit
的CSS属性。它的作用很像background-size
属性。
.image_container > img {
object-fit: contain;
}
请注意,到目前为止(2016年10月),这还没有完全的浏览器支持,所以你可能想看看将图像设置为div的背景,并使用background-position
和background-size
来处理这个问题,而不是<img>
标签。
.image_container {
height: 300px;
background-color: cornflowerblue;
image-rendering: pixelated;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALklEQVQoU2NkgID/UBqdYmSESoJobOA/sgKQKTCFMDaKAuqYAHMs3CqiHInXmwDZGBMDEmk6SQAAAABJRU5ErkJggg==');
background-repeat: no-repeat;
background-position: center center;
background-size: 200px;
}
<div class="image_container"></div>
.cover_image {
height: 400px;
background: url('http://lorempixel.com/g/400/200/') no-repeat scroll center center;
background-size: cover;
}
<div class="cover_image"></div>
相关文章:
- 如何在响应视频上垂直居中文本
- 单击水平滚动库中的图像以居中显示无法工作的功能
- JQuery mobile:使用网格将多个图像垂直和水平居中
- 垂直居中动态UL
- 如何强制流体Vimeo iframe自动垂直居中
- 使用jQuery对图像进行居中和动态调整大小时出现问题
- 如何使我的水平亚垂直居中对齐
- 垂直居中使用Javascript的按钮潜水
- 将
垂直居中放在表格
内 - 垂直居中上传的图像预览
- 当模态有时大于屏幕时,我如何水平/垂直居中模式弹出窗口
- 在引导列中垂直居中响应图像
- 使用 JS 代码在幻灯片放映中垂直居中图像
- 如何在fullpage.js中垂直居中显示图像
- 使用jQuery垂直居中和裁剪图像
- 如果图像高度超过图像宽度,通过裁剪其顶部和底部来垂直居中图像-仅使用CSS即可
- 垂直居中我的背景图像
- 在父行中将图像垂直居中
- 在固定高度的引导转盘上垂直居中显示图像
- 垂直居中可变高度图像,同时保持最大宽度/高度