我们在codepen上有以下代码。我们遇到的问题是,我们正在使用<picture>
属性来基于viewport
渲染图像,但是无法使图像占用与覆盖在图像上的文本相同的空间。
codepin详细信息:
background-color: #eee
,因此您可以看到文本占用的区域。 position: absolute
,但可以对其进行更改。 viewport
,我们始终希望<source>
标签中的图像仅占据文本所占的空间。目标:
<picture>
和<source>
style: background-image('path/to/image')
上使用<div class="item__img">
当image
上方的文本扩展时,如何扩展呢?
答案 0 :(得分:1)
您可以在img上使用object-fit
属性:
.item {
position: relative;
width: 33%;
}
img{
position:absolute;
width:100%;
height:100%;
object-fit:cover;
}
.item__text {
background-color: #eee;
opacity: 0.5;
padding:32px;
}
<div class="item">
<div class="item__img">
<picture>
<source media="(min-width: 1300px)" srcset="https://placeimg.com/1000/480/nature">
<source media="(min-width: 1024px)" srcset="https://placeimg.com/960/480/nature">
<img src="https://placeimg.com/640/480/nature" alt="Flowers">
</picture>
</div>
<div class="item__text">
<h3>Some title</h3>
<p>Efficiently communicate sticky quality vectors after compelling growth strategies. </p>
</div>
</div>
答案 1 :(得分:0)
如果您的图片始终大于文本框,这是解决方案
.item {
position: relative;
max-width: 100%;
}
.item__img img {
width: 100% !important;
}
.item__text {
position: absolute;
background: rgba(238,238,238, 0.5);
padding: 32px;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 5;
display: flex;
flex-direction: column;
justify-content: center;
}
<div class="item">
<div class="item__img">
<picture>
<source media="(min-width: 1300px)" srcset="https://placeimg.com/1000/480/nature">
<source media="(min-width: 1024px)" srcset="https://placeimg.com/960/480/nature">
<img src="https://placeimg.com/640/480/nature" alt="Flowers" style="width:auto;">
</picture>
</div>
<div class="item__text">
<div>
<h3>Some title</h3>
<p>Efficiently communicate sticky quality vectors after compelling growth strategies. </p>
</div>
</div>
</div>