我一直在尝试使用 object-fit
放在里面的几张图片上 article
元素,但它似乎根本不影响它们。
期望值 object-fit
财产将是 cover
,但截至目前,其他任何值似乎都没有效果。
当我改变它的价值时,它们不会缩小,不会增长,不会......没有。
如果您看到CodePen,则两行之间会有空白区域,并且图像不会占用相同的空间/高度(正如预期的那样) object-fit: cover
)。
body{
margin: 0 auto; padding: 0;
}
main{
min-height: 70vh;
padding: 0;
}
main > section.posts{
box-sizing: border-box;
margin: 0; padding: 0;
display: flex;
flex-flow: row wrap;
}
main > section.posts > article{
outline: 1px solid red;
width: 22vw;
min-height: 100vh;
margin: 0; padding: 0;
flex-grow: 1;
overflow: hidden;
box-sizing: border-box;
}
main > section.posts > article > img{ /* Our suspect */
object-fit: cover;
}
<!--
Basic structure of this file is
<main>
<section.posts>
<article> (six of them)
<image>
-->
<main>
<section class="posts">
<article>
<img src="http://41.media.tumblr.com/tumblr_m6s6d65lE11qdnz8wo1_400.jpg">
</article>
<article>
<img src="http://41.media.tumblr.com/71c1fe7c899cd048fb961d3c1953411b/tumblr_nj24pvINyW1qzq8p3o1_400.jpg">
</article>
<article>
<img src="http://36.media.tumblr.com/3358cb6ac8eaa0e61dffd53bc1bab93d/tumblr_n92l475hol1qlmppmo1_400.png">
</article>
<article>
<img src="http://36.media.tumblr.com/9ad997ca0385a23a8d82ec919da2392c/tumblr_nwcewbFVAL1s71gzco1_400.jpg">
</article>
<article>
<img src="http://41.media.tumblr.com/tumblr_mbl45xDSwj1qfn79co1_400.jpg">
</article>
<article>
<img src="http://41.media.tumblr.com/1c3718e71a2aa5acaaaf4af654991c91/tumblr_nx6psaH67d1tvh80lo1_400.jpg">
</article>
</section>
</main>
起源
答案:
object-fit
适用于替换的内容。这意味着当图像加载到页面上时,实际图像会被替换。图像标签内的内容适用于 object-fit
属性。这是 独立于图像容器。
用img标签替换article对象应该会使图像在弹性框中拉伸并适当填充。
body{
margin: 0 auto; padding: 0;
}
main{
min-height: 70vh;
padding: 0;
}
main > section.posts{
box-sizing: border-box;
margin: 0; padding: 0;
display: flex;
flex-flow: row wrap;
}
main > section.posts > img{
outline: 1px solid red;
width: 22vw;
min-height: 100vh;
margin: 0; padding: 0;
flex-grow: 1;
overflow: hidden;
box-sizing: border-box;
}
main > section.posts > img{ /* Our suspect */
object-fit: cover;
}
<main>
<section class="posts">
<img src="http://41.media.tumblr.com/tumblr_m6s6d65lE11qdnz8wo1_400.jpg">
<img src="http://41.media.tumblr.com/71c1fe7c899cd048fb961d3c1953411b/tumblr_nj24pvINyW1qzq8p3o1_400.jpg">
<img src="http://36.media.tumblr.com/3358cb6ac8eaa0e61dffd53bc1bab93d/tumblr_n92l475hol1qlmppmo1_400.png">
<img src="http://36.media.tumblr.com/9ad997ca0385a23a8d82ec919da2392c/tumblr_nwcewbFVAL1s71gzco1_400.jpg">
<img src="http://41.media.tumblr.com/tumblr_mbl45xDSwj1qfn79co1_400.jpg">
<img src="http://41.media.tumblr.com/1c3718e71a2aa5acaaaf4af654991c91/tumblr_nx6psaH67d1tvh80lo1_400.jpg">
</section>
</main>
这是规范中说的内容:
该
object-fit
property指定如何替换的内容 元件应安装在由其使用高度和 宽度。
我专注于...... 安装在由其使用的高度和宽度确定的盒子上。
所以我补充道 height
和 width
你的属性 img
元素,它现在似乎工作。
要删除每个图像下的微小空白行,请添加 vertical-align: bottom
到了 img
。有关解释,请参阅此处: 在图象标记下的奥秘白色空间
作为旁注,您可能需要考虑浏览器支持:
object-fit
(没有IE支持;有限的Safari支持)main
(没有IE支持)- Flexbox的 (考虑前缀)
我将容器,图像和容器的父级更改为 box-sizing: content-box
因为img被替换并切换了 object-fit: cover
在容器上而不是img。由于img预计将被裁剪,高度为100vh,宽度为100%,+ 22hw偏移在前四位工作良好,底部两个img似乎有一点变形,并不多。 object-position
仍然不适合我(从来没有): - \
http://codepen.io/01/pen/zrvdaz?editors=110
body{
margin: 0 auto; padding: 0;
}
main{
min-height: 70vh;
padding: 0;
}
main > section.posts{
box-sizing: content-box;
margin: 0; padding: 0;
display: flex;
flex-flow: row wrap;
}
main > section.posts > article{
outline: 1px solid red;
width: 22vw;
min-height: 100vh;
margin: 0; padding: 0;
flex-grow: 1;
overflow: hidden;
box-sizing:content-box;
object-fit: cover;
}
main > section.posts > article > img{
display: block;
box-sizing:content-box;
max-height: 100vh;
width: calc(100% + 22vh);
object-position: 100% 100%;
}