如何在文本叠加扩展时扩展图像?
How to expand image as text overlay expands?
我们在 codepen 上有以下代码。我们遇到的问题是我们正在使用 <picture>
属性来渲染基于 viewport
的图像,但无法让图像占用与文本相同数量的 space覆盖在图像上。
codepin 详细信息:
- 当前文本有
background-color: #eee
,因此您可以看到文本占用的区域。
- 图文有
position: absolute
,可打开修改。
- 基于
viewport
,我们总是希望<source>
标签中的图像只占文本所占的部分。
目标:
- 使图像占据与覆盖在顶部的文本相同的高度和宽度
- 使用
<picture>
和 <source>
- 不在
<div class="item__img">
上使用 style: background-image('path/to/image')
- 愿意裁剪图像以使其适合,但更希望在不裁剪的情况下完成。
当前问题:
期望的输出
我们如何让 image
随着其顶部文本的扩展而扩展?
如果您的图片总是比文本框大,这里有一个解决方案
.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>
您可以在您的 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>
我们在 codepen 上有以下代码。我们遇到的问题是我们正在使用 <picture>
属性来渲染基于 viewport
的图像,但无法让图像占用与文本相同数量的 space覆盖在图像上。
codepin 详细信息:
- 当前文本有
background-color: #eee
,因此您可以看到文本占用的区域。 - 图文有
position: absolute
,可打开修改。 - 基于
viewport
,我们总是希望<source>
标签中的图像只占文本所占的部分。
目标:
- 使图像占据与覆盖在顶部的文本相同的高度和宽度
- 使用
<picture>
和<source>
- 不在
<div class="item__img">
上使用 - 愿意裁剪图像以使其适合,但更希望在不裁剪的情况下完成。
style: background-image('path/to/image')
当前问题:
期望的输出
我们如何让 image
随着其顶部文本的扩展而扩展?
如果您的图片总是比文本框大,这里有一个解决方案
.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>
您可以在您的 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>