1. ホーム
  2. ハイパーリンク

[解決済み】フレックスボックスで要素を最下段に揃える

2022-04-28 02:07:19

質問

私は div を、いくつかの子供と一緒に表示します。

<div class="content">
  <h1>heading 1</h1>
  <h2>heading 2</h2>
  <p>Some more or less text</p>
  <a href="/" class="button">Click me</a>
</div>

で、以下のようなレイアウトにしたい。

 -------------------
|heading 1          |
|heading 2          | 
|paragraph text     |
|can have many      |
|rows               |
|                   |
|                   |
|                   | 
|link-button        |
 -------------------

の中にどれだけのテキストがあるかにかかわらず p をくっつけたい。 .button フローから外れることなく、常に一番下に表示されます。Flexboxで実現できると聞いたのですが、うまくいきません。

どうすればいいですか?

を使用することができます。 自動マージン

による整列の前に justify-content align-self , は、その部分の自動余白に分配されます。 の次元にある。

だから、どちらか一方(あるいは両方)を使うことができるのです。

p { margin-bottom: auto; } /* Push following elements to the bottom */
a { margin-top: auto; } /* Push it and following elements to the bottom */

.content {
  height: 200px;
  border: 1px solid;
  display: flex;
  flex-direction: column;
}
h1, h2 {
  margin: 0;
}
a {
  margin-top: auto;
}
<div class="content">
  <h1>heading 1</h1>
  <h2>heading 2</h2>
  <p>Some text more or less</p>
  <a href="/" class="button">Click me</a>
</div>

あるいは、その前の要素を a は、空いたスペースを埋めるために成長します。

p { flex-grow: 1; } /* Grow to fill available space */

.content {
  height: 200px;
  border: 1px solid;
  display: flex;
  flex-direction: column;
}
h1, h2 {
  margin: 0;
}
p {
  flex-grow: 1;
}
<div class="content">
  <h1>heading 1</h1>
  <h2>heading 2</h2>
  <p>Some text more or less</p>
  <a href="/" class="button">Click me</a>
</div>