【发布时间】:2021-06-06 19:45:28
【问题描述】:
在我的一个页面布局中,我有并排的卡片。每张卡片都有一个标题、一张图片和一个简短的描述。来自 QA 的某个人创建了一个异常案例,并在混合中扔了一张尺寸非常不规则的图像。无法说服老板修复生产中实际存在的一两个图像。相反,我现在需要想出一个可以影响所有图像的解决方案。
这是布局,简化:
为简单起见,99.9% 的图片为 300 像素宽和 200 像素高。
QA 抛出一个 1000 像素宽和 1000 像素高的图像。
以下在某些情况下有效:
@media screen and (max-width: 1024px) {
.the-card-image {
width: 100%;
-o-object-fit: cover;
object-fit: cover;
-o-object-position: center;
object-position: center;
max-height: $btmimglgh;
min-height: $btmimgsmh;
max-width: $btmimglgw;
min-width: $btmimgsmw;
}
}
奇迹般地——在这个实际场景中——所有图像都具有相同的高度和宽度。 封闭容器(蓝色框)都没有任何设置的宽度或高度。它们的宽度基于百分比。
最大高度和最大宽度是图像可以获得的最高尺寸(通过 Inspector)。而 min-height 和 min-width 是最小的尺寸。
但是,必须有更好的方法来做到这一点,对吧?
我在图片上尝试过位置:absolute; bottom: 0; left: 0; right: 0; top: 0;,但无济于事。我必须支持旧的网络浏览器,所以我不能使用aspect-ratio(这仍然是实验性的)。
谁能想到一种“聪明的方法”来做到这一点——我显然无法弄清楚这一点。
.
【问题讨论】:
-
您是否熟悉commonly used padding hack 以保持图像纵横比?
-
@rayhatfield,不,我对此并不熟悉。我要去看看。如果它适用于我的场景,那就太好了。
-
中心思想:垂直填充百分比是根据the element's width 计算的,而不是它的高度,所以如果一个元素是200px 宽,指定
padding-top: 50%可以获得100px 的填充。将其与height: 0;结合使用,您将得到一个具有固定纵横比的元素。 -
@rayhatfield,这是一个有趣的实验。这在一定程度上有效,但过大的图像在某些宽度处开始出现。
-
我发布了一个带有示例实现的答案。