【问题标题】:How can I get an item inside a flex item to stretch 100% of the parent?如何让弹性项目中的项目拉伸父项的 100%?
【发布时间】:2019-07-05 17:53:18
【问题描述】:

我有一组卡片,它们都在一个弹性容器中,因此它们伸展的高度相同。 如何使 card__content 拉伸剩余的高度,以便日期位于卡片的底部? 我试过添加 高度:100%;这没有做任何事情。这是为什么?我不明白什么?

下面是HTML和css

<div class="wrapper">
    <article class="card">
        <a class="card-link" href="www.test.com">
           <img class="card__image" src="card-image.jpg" />
          <div class="card__content">
            <h2 class="h5">This is a news</h2>
            <small class="card__date">30 May 2019</small> 
          </div>
        </a>
    </article>
    <article class="card">
        <a class="card-link" href="www.test.com">
           <img class="card__image" src="card-image.jpg" />
          <div class="card__content">
            <h2 class="h5">This is another news</h2>
            <small class="card__date">30 May 2019</small> 
          </div>
        </a>
    </article>
    <article class="card">
        <a class="card-link" href="www.test.com">
           <img class="card__image" src="card-image.jpg" />
          <div class="card__content">
            <h2 class="h5">This is another news with a very long title</h2>
            <small class="card__date">30 May 2019</small> 
          </div>
        </a>
    </article>
    <article class="card">
        <a class="card-link" href="www.test.com">
            <img class="card__image" src="card-image.jpg" />
            <div class="card__content">
                <h2 class="h5">This is a another news with a really long heading</h2>
                <small class="card__date">30 May 2019</small> 
            </div>
        </a>
    </article>
</div>

CSS

.wrapper {
    display: flex;
    flex-wrap: wrap;
}

.card {
    box-shadow: 0 15px 35px 0 rgba(0, 0, 0, 0.08);
    border-radius: 4px;
    overflow: hidden;
    min-height: 100%;
}

.card-link {
    display: inline-block;
    min-width: 100%;
    min-height: 100%;
    margin-right: 1rem;
}

.card__content {
    position: relative;
    padding: 3rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    background: white;
    height: 100%;
}

.card__image {
    background: purple;
    min-width: 100%;
    position: relative;
}


.card__date {
    margin-top: auto;
}

这里有一个codepen的链接

https://codepen.io/anon/pen/KjBGrd#anon-login

【问题讨论】:

  • 您的日期已经在卡片的底部。你想把它放在哪里?
  • @Irin 我希望它贴在卡片底部 - 如果标题较长,我希望所有日期都对齐到底部 - 距离卡片底部 50 像素跨度>
  • 我已经为你写了一个代码,请检查一下。 @杰西卡
  • @Irin 不幸的是,这对我不起作用 - 将日期定位为绝对意味着顶部的边距没有任何作用:-/
  • 现在我很困惑杰西卡抱歉我不能帮助你,我这样做可能对你没有帮助。有人发布另一个答案,请看一下。再哭一次

标签: html css flexbox


【解决方案1】:

只需继续在包装项目上使用 flexbox 并根据需要扩展它们的子项。

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

 ::before,
 ::after {
  box-sizing: inherit;
}

.wrapper {
  display: flex;
}

.card {
  width: 30%;
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid red;
  
  display: flex;
  flex-direction: column;
}

.card-link {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.card__content {
  padding: 2rem;
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}

.card__image {
  display: block;
  background: purple;
  height: 100px;
}

.card__date {
  margin-top: auto;
}
<div class="wrapper">
  <article class="card">
    <a class="card-link" href="www.test.com">
      <img class="card__image" src="card-image.jpg" />
      <div class="card__content">
        <h2 class="h5">This is a news</h2>
        <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Magni at repellat fugit veniam! Optio maxime tempora quis inventore pariatur architecto provident, ex quam ullam repellendus.</p>
        <small class="card__date">30 May 2019</small>
      </div>
    </a>
  </article>
  <article class="card">
    <a class="card-link" href="www.test.com">
      <img class="card__image" src="card-image.jpg" />
      <div class="card__content">
        <h2 class="h5">This is another news</h2>
        <small class="card__date">30 May 2019</small>
      </div>
    </a>
  </article>
  <article class="card">
    <a class="card-link" href="www.test.com">
      <img class="card__image" src="card-image.jpg" />
      <div class="card__content">
        <h2 class="h5">This is a another news with a really long heading</h2>
        <small class="card__date">30 May 2019</small>
      </div>
    </a>
  </article>
</div>

【讨论】:

    【解决方案2】:

    我已将日期位置更改为绝对位置,使其始终位于卡片底部,无论文本大小如何。

    .wrapper {
      display: flex;
    }
    
    .card {
      width: 30%;
      box-shadow: 0 15px 35px 0 rgba(0, 0, 0, 0.08);
      border-radius: 4px;
      overflow: hidden;
      min-height: 100%;
      position: relative;
    }
    
    .card-link {
      display: inline-block;
      min-width: 100%;
      min-height: 100%;
    }
    
    .card__content {
      padding: 3rem;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      align-items: center;
      background: white;
    }
    
    .card__image {
      display: inline-block;
      background: purple;
      min-width: 100%;
      position: relative;
      height: 100px;
    }
    
    .card__date {
      margin-top: auto;
      position: absolute;
      bottom: 20px;
    }
    <div class="wrapper">
      <article class="card">
        <a class="card-link" href="www.test.com">
          <img class="card__image" src="card-image.jpg" />
          <div class="card__content">
            <h2 class="h5">This is a news</h2>
            <small class="card__date">30 May 2019</small>
          </div>
        </a>
      </article>
      <article class="card">
        <a class="card-link" href="www.test.com">
          <img class="card__image" src="card-image.jpg" />
          <div class="card__content">
            <h2 class="h5">This is another news</h2>
            <small class="card__date">30 May 2019</small>
          </div>
        </a>
      </article>
      <article class="card">
        <a class="card-link" href="www.test.com">
          <img class="card__image" src="card-image.jpg" />
          <div class="card__content">
            <h2 class="h5">This is a another news with a really long heading</h2>
            <small class="card__date">30 May 2019</small>
          </div>
        </a>
      </article>
    </div>

    【讨论】:

    • 嗨,Irin,还请添加您所做更改的一些详细信息,以便有相同问题的人可以轻松理解答案...
    猜你喜欢
    • 2016-02-26
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2019-04-24
    • 2012-10-19
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多