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

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

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

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

CSS

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

Q&A

解決済

1回答

3349閲覧

cssでフレックスボックスを使い、1つを「残りの高さすべて」にセットしたい

intersection

総合スコア2

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/02/02 03:25

編集2021/02/02 03:27

###実現したい目的
こちらですが、下の .contents というクラスを、「残りの高さすべて」にセットする方法を知りたいです。

<html> <head> <style> body { padding: 0; margin: 0; } .side { min-height: 100vh; overflow-y: scroll; } .container { height: 100%; display: flex; flex-direction: column; } .header { height: 50px; margin: 0 0 10px 0; background: skyblue; } .menu { height: 30px; margin: 0 0 20px 0; background: salmon; position: sticky; top: 0; } .contents { flex: 1; background: khaki; } </style> </head> <body> <aside class="side"> <div class="container"> <div class="header"> </div> <div class="menu"> </div> <div class="contents"> </div> </div> </aside> </body> </html>

高さとしては
.side
= .container
= .header + .menu + .contents
という関係です。
このうち .header と .menu は高さ指定しているので、残りを .contents に割り振りたいということです。

###試したこと

私のレベルですと calc(100% - 50px - 10px - 30px - 20px) のようにして、高さ指定した .header と .menu の分を無理やりcalcで引くという方法をまず思いつきました。

しかしこの高さ指定はスマホで変化するため、いちいち calc をそれに対応させるのはどうかと思います。

続いてJSで測るの方法も思いつきますが、それだけのために余計な手間だと思います。

最後に試したのが上記コードのフレックスボックスで、

.container { height: 100%; display: flex; flex-direction: column; }

のように縦に並べつつ

.contents { flex: 1; background: khaki; }

この flex: 1; で「残りの高さすべて」となる意図で書いたのですが、そのようになりません。

CSSでの指定で「残りの高さすべて」はどうしたらいいでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

css

1.side { 2 min-height: 100vh; 3 overflow-y: scroll; 4 height: 100vh; /* これを追加 */ 5} 6

参考:

<percentage> Specifies a percentage height. The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the used height is calculated as if 'auto' was specified.

10.5 Content height: the 'height' property | Visual formatting model details

勝手訳:パーセンテージの高さを指定します。パーセンテージは、包含ブロックの高さを基に計算されます。包含ブロックの高さが明示的ではなく(たとえば、コンテンツ高さ依存)、絶対的配置ではない場合、auto として計算されます。

投稿2021/02/02 03:36

編集2021/02/02 03:45
Lhankor_Mhy

総合スコア36158

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

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

intersection

2021/02/02 04:29

翻訳まで!!wどうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問