我一直在尝试对放置在article
元素中的几个图像使用object-fit
,但它似乎根本没有影响它们。object-fit
属性所需的值应该是cover
,但到目前为止,其他值似乎都不起作用。
当我改变它的价值,他们不缩小,不增长,不...什么都没有。
如果您看到CodePen,则两行之间存在空白,并且图像的空间/高度不完全相同(如object-fit: cover
所预期的那样)。
Here's a CodePen
第一个
我一直在尝试对放置在article
元素中的几个图像使用object-fit
,但它似乎根本没有影响它们。object-fit
属性所需的值应该是cover
,但到目前为止,其他值似乎都不起作用。
当我改变它的价值,他们不缩小,不增长,不...什么都没有。
如果您看到CodePen,则两行之间存在空白,并且图像的空间/高度不完全相同(如object-fit: cover
所预期的那样)。
Here's a CodePen
第一个
7条答案
按热度按时间jucafojl1#
要使
object-fit
工作,图像本身需要width
和height
。在OP的CSS中,图像没有设置宽度和/或高度,因此对象适配无法工作。**提示:
width
和height
不一定是图像本身的尺寸!**将其视为div
:如果您希望div
填充它的容器,您将设置...浏览器将知道此div应该完全填满其容器的空间。
在
img
的情况下,浏览器执行两个步骤:1.浏览器会建立边界框:默认情况下,框的尺寸就是图片本身的尺寸。但是我们可以告诉浏览器将图片的大小调整为容器宽度的100%和容器高度的100%。然后,它将创建一个完全填充容器空间的框。
1.浏览器将图像像素放入此框:默认情况下,图像将被压缩/拉伸,以使 * 图像宽度与框宽度 * 匹配,* 图像高度与框高度 * 匹配。但使用
object-fit
,您可以选择如何匹配图像和框尺寸。例如,使用object-fit:cover
命令放大/缩小图像,以完全填充框,同时保持其纵横比。关于OP,我将简单地设置:
最后一个警告:使用%值调整大小时,容器必须有定义的宽度和高度,才能进行对象调整。OP需要在
main > section.posts > article
中定义height
。k97glaaz2#
object-fit
only affects the way the picture displays inside of theimg
boundaries.Object-Fit
The object-fit CSS property sets how the content of a replaced element, such as an
<img>
or<video>
, should be resized to fit its container.Replaced Element
elements whose contents are not affected by the current document's styles. The position of the replaced element can be affected using CSS, but not the contents of the replaced element itself.
This means that the object-fit is independent of your
article
elements as object-fit only cares about the dimensions of theimg
element.The point of this is that you need to get the
img
elements to stretch to those dimensions first. Theobject-fit
only affects the way the picture displays inside of theimg
boundaries.Sample Code / Demonstration
Solutions to Question
Solution 1: More flex
Using your current HTML structure you can use the snippet below to apply an additional flex inside of each
article
.Solution 2: Remove article elements
Or you could restructure your html to remove the
article
elements and flex theimg
elements.os8fio9y3#
以下是规范中的说明:
object-fit
属性**object-fit
属性指定应如何将被替换元素的内容调整到由其使用的高度和宽度建立的框中。我关注的是... * 是否适合根据所用高度和宽度确定的 Package 盒。*
因此,我将
height
和width
属性添加到img
元素中,现在似乎可以工作了。Revised Codepen
要删除每个图像下面的一小行空白,请将
vertical-align: bottom
添加到img
。有关说明,请参阅此处:Mystery white space underneath image tag顺便说一下,您可能需要考虑浏览器对以下内容的支持:
1.* *
object-fit
(不支持IE)1.* *
main
(不支持IE)eoxn13cs4#
我也遇到过类似的问题,对象匹配不起作用。我在图像中添加了最大宽度,它起作用了。
mv1qrgav5#
我发现了一个非常简单的技巧,对我来说效果最好,但首先要感谢泰尼恩从他的回答中得到的启发。
您可以简单地将img元素放在您想要的任何大小的div元素中,然后将图像的宽度和高度设置为inherit,然后再设置您想要的任何对象适合值,它将完美地工作。
svdrlsy46#
我将容器、图像和容器的父项更改为
box-sizing: content-box
,因为img被替换,并将容器上的object-fit: cover
替换为img。由于img预计将被裁剪,100vh的高度和100%的宽度以及+22hw偏移量在顶部四个位置上工作良好,底部两个img似乎都有一点失真。不太多。object-position
仍然不适用于我(从来不适用):-http://codepen.io/01/pen/zrvdaz?editors=110
w9apscun7#
您可以在
div
标记中使用background-size
,而不是在img
标记中使用object-fit
,这对我来说非常有效。