質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

864閲覧

Flexで子要素を縦方向に中央と下部に配置する方法

Raiden

総合スコア22

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/05/10 06:36

Flexで以下の画像のように表示したいです。
赤いボックスが親要素で水色のボックスが子要素です。
CENTERは縦方向に中央で、ENDは縦方向で最下部に表示したいです。

イメージ説明

これを目標に以下のように組みました。

HTML

1<div class="mother-box"> 2 <div class="child-box center-box">CENTER</div> 3 <div class="child-box end-box">END</div> 4</div>

CSS

1.mother-box{ 2 display:flex; 3 flex-direction:column; 4 background-color:red; 5 width:350px; 6 height:500px; 7} 8 9.child-box{ 10 background-color:lightblue; 11 width:300px; 12 height:100px; 13 margin:10px; 14} 15 16.center-box{ 17 align-self:center; 18} 19 20.end-box{ 21 align-self:flex-end; 22}

縦方向には表示できたものの、横方向にalign-selfがきいてしまいました。
縦方向に中央と下部に表示するためにはどう書き換えればよいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

align-selfは交差軸方向のレイアウトを決めるものですので、flex-direction:column; のときは、水平方向の位置決めになります。

flex-direction:column; のときの垂直方向の位置決めするプロパティはなさそうですので、
::before疑似要素を追加して、space-between で両端揃えにすればどうでしょう。

.mother-box{
display:flex;
flex-direction:column;
align-items: center; /* 追加 /
justify-content: space-between; /
追加 */
background-color:red;
width:350px;
height:500px;
}
.child-box{
background-color:lightblue;
width:300px;
height:100px;
margin:10px;
}

/* 以下追加 */
.mother-box::before {
content: "";
width:300px;
height:100px;
margin:10px;
}

投稿2021/05/10 07:05

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。
あまりスマートなものを思いつきませんでした。


絶対配置を使う方法

css

1.mother-box{ 2 display:flex; 3 /*flex-direction:column; 削除*/ 4 background-color:red; 5 width:350px; 6 height:500px; 7} 8 9.child-box{ 10 background-color:lightblue; 11 width:300px; 12 height:100px; 13 margin:10px; 14} 15 16.center-box{ 17 align-self:center; 18 position: absolute; /* 追加 */ 19} 20 21.end-box{ 22 align-self:flex-end; 23}

疑似要素を使う方法

css

1.mother-box{ 2 display:flex; 3 flex-direction:column; 4 background-color:red; 5 width:350px; 6 height:500px; 7 justify-content: space-between; /* 追加 */ 8} 9.mother-box::before{/* 追加 */ 10 content: ""; 11 height:100px; 12} 13 14.child-box{ 15 background-color:lightblue; 16 width:300px; 17 height:100px; 18 margin:10px; 19} 20 21/* 削除 22.center-box{ 23 align-self:center; 24 position: absolute; 25} 26 27.end-box{ 28 align-self:flex-end; 29} 30*/

投稿2021/05/10 06:53

編集2021/05/10 06:55
Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問