Как расширить изображение при расширении наложения текста? - PullRequest
0 голосов
/ 01 декабря 2018

У нас есть следующий код на codepen .Проблема, которую мы имеем, состоит в том, что мы используем атрибут <picture> для визуализации изображений на основе viewport, но не можем заставить изображение занимать столько же места, сколько текст, наложенный на изображение.

детали кода:

  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 голосов
/ 01 декабря 2018

Вы можете использовать object-fit собственность на вашем img:

.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>
0 голосов
/ 01 декабря 2018

Если ваше изображение всегда больше, чем текстовое поле, вот решение

.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>
...