【问题标题】:Display items over image在图像上显示项目
【发布时间】:2019-05-06 11:12:37
【问题描述】:

我在codepen page 上有以下代码。 (包括用于代码运行目的 - 在 sn-p 中不起作用)目标是能够在 <div class="item"> 的底部显示 <div class="item__boxes"> 元素。

问题

如何在<div class="item"> 底部显示<div class="item__boxes"> 元素?

目标:

  1. 随着 <div class="item__text"> 的高度因其中的内容而增加,文本和 <div class="item__boxes"> 之间应始终有一些填充/边距。
  2. 无论断点如何,<div class="item__boxes"> 都应始终显示在 <div class="item"> 元素的底部。

当前问题

期望的输出

代码

.item {
  position: relative;
}
.item__wrapper {
  max-width: 50%;
  position: relative;
}
.item__img img {
  width: 100% !important;
}
.item__text {
  position: absolute;
  background: rgba(238, 238, 238, 0.5);
  padding: 64px;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 5;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.item__boxes {
  background-color: #ccc;
  display: flex;
  position: absolute;
  bottom: 0;
}

.col-padding {
  padding: 16px;
}
.col-m-12 {
  width: 100%;
}

@media (min-width: 1024px) {
  .col-t-6 {
    width: 50%;
  }
}
<div class="item__wrapper">
<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">
		<h3>Some title</h3>
		<p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
	</div>
</div>
<div class="item__boxes">
		<div class="col-m-12 col-t-6 col-padding">
			<div>Some Title</div>
			<div>Enthusiastically incubate diverse initiatives without multifunctional strategic theme areas.</div>
		</div>
		<div class="col-m-12 col-t-6 col-padding">
			<div>Globally Title</div>
			<div>Globally impact integrated infomediaries via seamless mindshare. </div>
		</div>
		<div class="col-m-12 col-t-6 col-padding">
			<div>Distinctively Title</div>
			<div>Distinctively strategize long-term high-impact ideas whereas client-centered leadership skills.</div>
		</div>
</div>
</div>

【问题讨论】:

  • 请在此处包含您的代码,在 stackoverflow 上,因为链接中断,问题将对未来的用户无用。这也让我们更容易看到问题!
  • @RachelGallen 当我最初包含代码时,我收到警告说与文本相比代码过多,因此我将其移至我的codepen。现已添加。
  • @RachelGallen sn-p 功能也无法正确显示我的输出,因此我使用了 codepen 以使其更容易。
  • 是的,我明白了,但如果是这种情况,最好同时包含两者。
  • codepen.io/anon/pen/qQGPep 不透明图片背景,带文字,可调整

标签: html css image flexbox


【解决方案1】:

我玩过你的代码。 为了无论​​多宽都始终有一些填充,您必须在文本上使用相对定位并绝对定位图像。按照原样,padding-bottom 将根据它的宽度而有所不同,我建议您将图像包含为 background-image 并将背景图像的大小设置为 css 中的 cover ,这样无论你的屏幕多宽/窄/高/短,都不会出现缝隙。我以 80% 的宽度尝试了给定的代码,并将填充设置为 33%(我没有放入背景图像代码)在 50% 时,您的初始宽度,不需要底部填充。

sn-p 代码由于 css 结构而无法运行,但我还是将其包含在内以供将来参考。这是codepen link 和second one

希望对你有帮助

.item {
  position: relative;
  &__wrapper {
    max-width: 50%;
    position: relative;
    min-height: 100vh;
  }
  &__img {
    img {
      top: 0px;
      position: absolute;
      width: 100%!important;
    }
  }
  &__text {
    top: 0px;
    position: relative;
    min-height: 100vh;
    background: rgba(238, 238, 238, 0.5);
    padding-right: 50px;
    padding-left: 50px;
    padding-top: 30px;
    //padding-bottom:33vh at 80%;
    z-index: 0;
    display: flex;
    flex-direction: column;
    align-items: top;
    justify-content: center;
  }
  &__boxes {
    background-color: #ccc;
    display: flex;
    position: relative;
    bottom: 0px;
  }
}

.col {
  &-padding {
    padding: 16px 16px 5px 16px;
  }
  &-m-12 {
    width: 100%;
  }
}

@media (min-width: 1024px) {
  .col {
    &-t-6 {
      width: 50%;
    }
  }
}
<div class="item__wrapper">
  <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">
      <h3>Some title</h3>
      <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally
        procrastinate. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
    </div>
  </div>
  <div class="item__boxes">
    <div class="col-m-12 col-t-6 col-padding">
      <div>Some Title</div>
      <div>Enthusiastically incubate diverse initiatives without multifunctional strategic theme areas.</div>
    </div>
    <div class="col-m-12 col-t-6 col-padding">
      <div>Globally Title</div>
      <div>Globally impact integrated infomediaries via seamless mindshare. </div>
    </div>
    <div class="col-m-12 col-t-6 col-padding">
      <div>Distinctively Title</div>
      <div>Distinctively strategize long-term high-impact ideas whereas client-centered leadership skills.</div>
    </div>
  </div>
</div>

【讨论】:

  • 通过使用background-image,我必须删除&lt;picture&gt; 元素,该元素出于性能原因用于根据断点提供不同的图像。此外,您提供的codepen link 并不能解决问题。当在 >1536px 宽的屏幕上查看时,它似乎在两个元素之间添加了更多空间。有什么想法吗?
  • @usernameabc 您强调的问题将通过使用 background-image:cover 得到解决;
  • @usernameabc 如果是你担心的不透明度,看看这个小提琴(它改编自我早期的小提琴,我删除了以前的 jquery 并悬停在其中)jsfiddle.net/w8qnLhrs(这个是原来的:jsfiddle.net/RachGal/qj9tvrtf) 我绝对认为这是一个可行的选择。
  • 使用你的second one codepen,我能够让它在这个Items over carousel using background-image 中工作。我现在将继续在我们的现场测试并报告更新。
  • 根据描述和您所拥有的,这是行之有效的解决方案。
猜你喜欢
  • 2017-09-23
  • 2019-02-17
  • 1970-01-01
  • 2018-03-16
  • 2020-10-07
  • 1970-01-01
  • 2011-11-25
  • 2019-11-19
相关资源
最近更新 更多