【问题标题】:Flexbox Aligning Bottom [duplicate]Flexbox 对齐底部 [重复]
【发布时间】:2018-01-24 22:09:12
【问题描述】:

我有一系列使用 flexbox 的卡片,我希望底部元素(在本例中为 podcast 小部件)与底部(flex-end)对齐,而其他元素与顶部对齐。

我对前端 Web 开发还很陌生,感觉有点像我只是缺少一些基本的想法来让它发挥作用。感谢您的帮助!

这是我目前的代码笔,我想让它保持在底部。

html,
body {
  font-family: sans-serif;
  font-size: 16px;
}


/* Typography and Helpers */

.text-right {
  text-align: right;
}


/* layout */

section {
  display: block;
  padding: 2rem 0;
}

.container {
  width: 1200px;
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
}

.columns {
  display: flex;
  margin-left: -0.75rem;
  margin-right: -0.75rem;
  margin-top: -0.75rem;
  /*   - margins are for nesting */
}

.columns:last-child {
  margin-bottom: -0.75rem;
}

.columns:not(:last-child) {
  margin-bottom: 0.75rem;
}

.column {
  display: block;
  -ms-flex-preferred-size: 0;
  flex-basis: 0;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
  -ms-flex-negative: 1;
  flex-shrink: 1;
  padding: 0.75rem;
}

.align-bottom-container {
  margin-top: auto;
  align-items: flex-end;
}

.align-bottom-item {
  margin-top: auto;
  display: block;
}


/* layout alignment */

.align-items-bottom {
  align-items: flex-end;
  display: flex;
  justify-content: center;
}

.flex {
  display: flex;
}


/* cards */

.flex-card {
  border-left: .5em solid #0093d0;
  background-color: #f7f7f7;
  padding: 1em 1em 0 1em;
}

.two {
  width: 50%;
  flex-basis: 50%;
  min-width: 50%;
}

.card-content {
  padding: 1.5rem;
}

.blog-category {}

.blog-title {}

.blog-meta {}

.blog-description {}
<section class="container">
  <div class="columns">
    <div class="column">
      <div class="flex-card">
        <div class="card-content">
          <p class="blog-category">Expert Strategies</p>
          <div class="columns">
            <p class="column blog-title">Pivot to Purchase</p>
            <p class="column blog-meta text-right">August 8, 2017 <br>Podcast #18</p>
          </div>
          <p class="blog-description">If technology can be a disruptor - it will. Zillow has a pilot program that...</p>
          <button>Read More</button>
        </div>
      </div>
      <footer class="align-bottom-container">
        <a class="spreaker-player" href="https://www.spreaker.com/user/kellyguest/expert-strategies-audit-your-brand" data-resource="episode_id=11390290" data-theme="light" data-autoplay="false" data-playlist="false" data-width="100%" data-height="200px">Listen to "Expert Strategies:  Audit Your Brand" on Spreaker.</a>
        <script async src="https://widget.spreaker.com/widgets.js"></script>
      </footer>
    </div>
    <div class="column">
      <div class="flex-card">
        <div class="card-content">
          <p class="blog-category">Expert Strategies</p>
          <div class="columns">
            <p class="column blog-title">Pivot to Purchase</p>
            <p class="column blog-meta text-right">August 8, 2017 <br>Podcast #18</p>
          </div>
          <p class="blog-description">
            <div>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Temporibus voluptatibus provident inventore velit impedit maxime asperiores consequuntur, ex veritatis libero aspernatur itaque quidem, harum accusamus dolorem, vel similique delectus
              distinctio.
            </div>
          </p>
          <button>Read More</button>
        </div>
      </div>
      <footer><a class="spreaker-player" href="https://www.spreaker.com/user/kellyguest/expert-strategies-audit-your-brand" data-resource="episode_id=11390290" data-theme="light" data-autoplay="false" data-playlist="false" data-width="100%" data-height="200px">Listen to "Expert Strategies:  Audit Your Brand" on Spreaker.</a>
        <script async src="https://widget.spreaker.com/widgets.js"></script>
      </footer>
    </div>
  </div>
</section>

【问题讨论】:

  • @Michael_B 这个特定问题中的值和我的回答伴随着我对 flex-box 的父/子属性以及如何正确定义父级的解释。
  • @KanstantsinArlouski,该值保持不变。你的答案还在。但这个问题与我看过的至少 10 篇其他帖子重复。
  • @Michael_B 我很抱歉。我提出来了,因为我认为重复的问题被删除了。

标签: html css flexbox


【解决方案1】:

align-items: flex-end; 的 flex 属性属于您尝试对齐的 flex 项的父项,这里的问题是您正在尝试将此属性应用于您的“页脚”,这是您假设的子项你的弹性父母。您的页脚的父级实际上是具有display: block; 属性的.column 类。

要实现您想要的,只需将这两行添加到您的 .column 类中

display: flex;
flex-direction: column;

这将使您的margin-top: 0; 属性生效。

另一种方法是使用属性justify-content: flex-end;,它属于弹性项/子项的父项。因此,您的页脚将与父母的末尾对齐。然后使用弹性卡上的属性margin-bottom: 0; 将其“浮动”远离页脚。

.column {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}

.flex-card {
  margin-bottom: auto;
  border-left: .5em solid #0093d0;
  background-color: #f7f7f7;
  padding: 1em 1em 0 1em;

}

html,
body {
  font-family: sans-serif;
  font-size: 16px;
}


/* Typography and Helpers */

.text-right {
  text-align: right;
}


/* layout */

section {
  display: block;
  padding: 2rem 0;
}

.container {
  width: 1200px;
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
}

.columns {
  display: flex;
  margin-left: -0.75rem;
  margin-right: -0.75rem;
  margin-top: -0.75rem;
  /*   - margins are for nesting */
}

.columns:last-child {
  margin-bottom: -0.75rem;
}

.columns:not(:last-child) {
  margin-bottom: 0.75rem;
}

.column {
  display: flex;
  flex-direction: column;
  -ms-flex-preferred-size: 0;
  flex-basis: 0;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
  -ms-flex-negative: 1;
  flex-shrink: 1;
  padding: 0.75rem;
}

.align-bottom-container {
  margin-top: auto;
  align-items: flex-end;
}

.align-bottom-item {
  margin-top: auto;
  display: block;
}


/* layout alignment */

.align-items-bottom {
  
  display: flex;
  justify-content: center;
}

.flex {
  display: flex;
}


/* cards */

.flex-card {
  border-left: .5em solid #0093d0;
  background-color: #f7f7f7;
  padding: 1em 1em 0 1em;
}

.two {
  width: 50%;
  flex-basis: 50%;
  min-width: 50%;
}

.card-content {
  padding: 1.5rem;
}

.blog-category {}

.blog-title {}

.blog-meta {}

.blog-description {}
<section class="container">
  <div class="columns">
    <div class="column">
      <div class="flex-card">
        <div class="card-content">
          <p class="blog-category">Expert Strategies</p>
          <div class="columns">
            <p class="column blog-title">Pivot to Purchase</p>
            <p class="column blog-meta text-right">August 8, 2017 <br>Podcast #18</p>
          </div>
          <p class="blog-description">If technology can be a disruptor - it will. Zillow has a pilot program that...</p>
          <button>Read More</button>
        </div>
      </div>
      <footer class="align-bottom-container">
        <a class="spreaker-player" href="https://www.spreaker.com/user/kellyguest/expert-strategies-audit-your-brand" data-resource="episode_id=11390290" data-theme="light" data-autoplay="false" data-playlist="false" data-width="100%" data-height="200px">Listen to "Expert Strategies:  Audit Your Brand" on Spreaker.</a>
        <script async src="https://widget.spreaker.com/widgets.js"></script>
      </footer>
    </div>
    <div class="column">
      <div class="flex-card">
        <div class="card-content">
          <p class="blog-category">Expert Strategies</p>
          <div class="columns">
            <p class="column blog-title">Pivot to Purchase</p>
            <p class="column blog-meta text-right">August 8, 2017 <br>Podcast #18</p>
          </div>
          <p class="blog-description">
            <div>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Temporibus voluptatibus provident inventore velit impedit maxime asperiores consequuntur, ex veritatis libero aspernatur itaque quidem, harum accusamus dolorem, vel similique delectus
              distinctio.
            </div>
          </p>
          <button>Read More</button>
        </div>
      </div>
      <footer><a class="spreaker-player" href="https://www.spreaker.com/user/kellyguest/expert-strategies-audit-your-brand" data-resource="episode_id=11390290" data-theme="light" data-autoplay="false" data-playlist="false" data-width="100%" data-height="200px">Listen to "Expert Strategies:  Audit Your Brand" on Spreaker.</a>
        <script async src="https://widget.spreaker.com/widgets.js"></script>
      </footer>
    </div>
  </div>
</section>

【讨论】:

  • 非常感谢快速正确的响应!这不仅有效,而且使用这种方法允许我删除多个对齐类,这些对齐类是我用来欺骗 flexbox 行使其表现得像列的。
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2016-02-29
  • 2015-09-02
  • 2018-07-01
  • 2018-09-24
  • 2014-09-02
相关资源
最近更新 更多