私は何人かの子供たちと一緒に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
を介したアライメントの前に、正の空き領域はその次元の自動マージンに分配されます。
それで、あなたはこれらのうちの1つ(または両方)を使うことができます:
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>
Display:flexを使用して要素を下に配置できますが、この場合はflexを使用したくないと思います。これはすべての要素に影響するためです。
Flexを使用して要素を下に配置するには、これを試してください。
.container {
display: flex;
}
.button {
align-self: flex-end;
}
ボタンに絶対位置を設定してbottom: 0
に設定するのが最善の策です。または、ボタンをコンテナの外側に配置し、負のtransform: translateY(-100%)
を使用して次のようにコンテナに入れることができます。
.content {
height: 400px;
background: #000;
color: #fff;
}
.button {
transform: translateY(-100%);
display: inline-block;
}
これをチェックしてください JSFiddle
align-self: flex-end;
を使った解決策は私にはうまくいきませんでしたが、これはflexを使いたい場合にはうまくいきました:
CSS
.content{
display: flex;
justify-content: space-between;
flex-direction: column;
}
HTML
<div class="content">
<div>
<h1>heading 1</h1>
<h2>heading 2</h2>
<p>Some more or less text</p>
</div>
<div>
<a href="/" class="button">Click me</a>
</div>
</div>
の結果:
-------------------
|heading 1 |
|heading 2 |
|paragraph text |
|can have many |
|rows |
| |
| |
| |
|link-button |
-------------------