如何随着文字叠加层的扩展而扩展图像?

时间:2018-11-30 23:06:47

标签: html css image picturefill

我们在codepen上有以下代码。我们遇到的问题是,我们正在使用<picture>属性来基于viewport渲染图像,但是无法使图像占用与覆盖在图像上的文本相同的空间。

codepin详细信息:

  1. 当前文本有background-color: #eee,因此您可以看到文本占用的区域。
  2. 图像和文本带有position: absolute,但可以对其进行更改。
  3. 基于viewport,我们始终希望<source>标签中的图像仅占据文本所占的空间。

目标:

  1. 使图像占据与顶部文字相同的高度和宽度
  2. 使用<picture><source>
  3. 不要在style: background-image('path/to/image')上使用<div class="item__img">
  4. 可以裁剪图像以使其适合图像,但希望在不裁剪的情况下进行操作。

当前问题: curernt issue

所需的输出 desired output

image上方的文本扩展时,如何扩展呢?

2 个答案:

答案 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>