【前端】如何让一个大图片在比它小的Div里水平垂直居中
2022-01-08留言
还有另一种方法是给div设置背景图片属性:background-image: url();
background-repeat: no-repeat;
background-position: center;
background-size: cover;
1 | <div class="box"> |
如题,如果某个<div>
的长宽是“200*150
”,
此时若想要往里面放置一个长宽是“400*300
”的图片,
且要求图片:
- 等比例缩放(不能变形)
- 图片在
div
里水平竖直都居中 - 四个边不能留空隙,超出部分裁切掉
那么我们可以想到用CSS的 object-fit
属性。该属性可以指定<img>
图片应该如何适应到高度和宽度已经确定的框中,来切换<img>
图片对象在元素框内的对齐方式。该属性有以下几个值:
object-fit: ontain;
被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比。 整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加“黑边”。object-fit: cover;
被替换的内容在保持其宽高比的同时填充元素的整个内容框。如果对象的宽高比与内容框不相匹配,该对象将被剪裁以适应内容框。object-fit: fill;
被替换的内容正好填充元素的内容框。整个对象将完全填充此框。如果对象的宽高比与内容框不相匹配,那么该对象将被拉伸以适应内容框。object-fit: none;
被替换的内容将保持其原有的尺寸,不伸缩。(可能导致图片在页面中非常大)object-fit: scale-down;
内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。
所以我们应该给图片添加object-fit: cover;
属性,
并根据实际情况调整图片长宽,
别忘了给外面的框添加overflow: hidden;
用来隐藏超出部分。
1 | .box { |
参考内容:
[1] https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit