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

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

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

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

1回答

699閲覧

Flexbody使用時に子要素の高さを広げたい

eio

総合スコア9

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2020/09/07 05:19

編集2020/09/07 06:09

前提・実現したいこと

webサイトにてmenu画面の部分を作成しております。
Flexbodyを利用中に縦の高さに関する制御ができなくなっております。
本日縦の配置に関してはこちらにて教えていただき制御することができました。
現状の状態だと画像のような状態になってしまいます。
イメージ説明
今後としてはマウスオンにてアニメーションなどを付けたいと考えています。
そのため縦の高さがulと同様の高さがほしいところです。
(ざっくり言うとアウトラインの青の線のところまで広がってほしい)

該当のソースコード

```HTML <menu> <ul> <li>おにぎり</li> <li>お茶</li> <li>おやつ</li> <li>バナナ</li> <li>敷物</li> </ul> </menu>

css

1menu{ 2 height: 62px; 3} 4menu ul{ 5 display: flex; 6 height: 62px; 7 align-items: center; 8 outline: 1px solid blue; 9 10} 11menu ul li{ 12 text-align: center; 13 flex:auto; 14 outline: 1px solid red; 15 list-style-type: none; 16}

問題に対して試したこと

①単純に縦の高さが不足していると考えheightを指定し、ulと同様の高さ62pxをmenu ul liに指定してみました。
するとFlexboxを使用しているために使用している『align-items: center;』が崩れてしまいました。
イメージ説明

②liがインラインだから高さ指定できるわけないじゃん、と考えmenu ul liをdiplay:block;にして高さを62pxにしてみましたがダメでした。
同様にインラインブロックにもしてみましたが同様にダメでした。

③ググてそれっぽい効果がありそうな行動『flex: 1 0 auto;』っを足してみるとか子要素であるmenu ul liに『display: flex;』をたすとかかいくつか試してみたんですがどれもレイアウト崩れを誘発するだけでした。
(ググってなぜそれらを書く必要があったのかはわかっていません。うまくいけば後からさらにそれをググる予定でした)

ちなみにインラインブロックmenu ul liに対してインラインブロックを指定し、heigh:62px;でul同様の高さを与えたときは高さは広がってはいます。(:hoverで色を指定し実験してみました)が文字のレイアウトが狂い左上(デフォ的な位置?)に戻ってしまいます。
そこでFlexbodyを使用している状態ながらもインラインブロックにしているからtext-alignとvertical-alignが効くのかもとも考えましたがだめでした

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

いかのようにしてみてはいかがですか?

サンプル

css

1menu ul { 2 display: flex; 3 height: 62px; 4 /* align-items: center; 削除 */ 5 outline: 1px solid blue; 6} 7menu ul li { 8 /* text-align: center; */ 9 flex: auto; 10 outline: 1px solid red; 11 list-style-type: none; 12 display: flex; 13 align-items: center; 14 justify-content: center; 15}

投稿2020/09/07 05:37

編集2020/09/07 06:14
Lhankor_Mhy

総合スコア36087

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

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

eio

2020/09/07 05:53

menu ul li に対して、text-align:center;を削除、display: flex;、align-items: center;、justify-content: center;を足してみましたが質問していた状態?『li』はあくまでもインラインなので文字の高さに依存している状態のままでした。
Lhankor_Mhy

2020/09/07 06:13

当方の環境では、問題が解消しているように見えます。 サンプルを追記しておきます。 https://jsfiddle.net/Lhankor_Mhy/2x05k8bj/ もし、問題の認識に齟齬があるようでしたら、お知らせください。
eio

2020/09/07 06:16

すいません!教えていただいたのでなりました!!!! ありがとうございます!!! でお聞きしたいのですがなぜ menu ul li に対してflexを書いたのでしょうか!?!?
eio

2020/09/07 06:17

スイマセン!display: flex;にした理由が知りたいと思いました!!
Lhankor_Mhy

2020/09/07 06:32

> display: flex;にした理由 align-items: center としたかったからです。 このプロパティが有効になるのは、display: flex または display: grid なので、どちらかが必要になります。
eio

2020/09/08 07:49

そうなんですね!displayタグについてもうちょっと勉強してみようと思います。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問