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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Flex

FlexはFlash PlayerやAdobe Airで動作するRIA(リッチインターネットアプリケーション)を開発する為のフレームワークです

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

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

CSS

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

Q&A

解決済

1回答

941閲覧

flex-growが決めた割合がうまく適用されません

passeri

総合スコア5

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Flex

FlexはFlash PlayerやAdobe Airで動作するRIA(リッチインターネットアプリケーション)を開発する為のフレームワークです

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/03/02 03:07

前提・実現したいこと

flex-growを使い幅を均等に振り分けたいです。
あるサイトのホームページの模写をしていてつまずきました。
該当サイトのソースコードも確認しつつやっていたのですが、うまくいきませんでした。

該当のソースコード

html

1<div class="content-top"> 2 <div class="top top-1"> 3 <h1>届くのは<br>あなたの好みの花だけ</h1> 4 <p>FLOWERのお花は季節やトレンドに合わせてプロがセレクトしたもの。雰囲気の異なる2種類のお花から毎回好きなものが選べます。</p> 5 </div> 6 <div class="top top-2"> 7 <h1>お花はポストに投函<br>忙しくても大丈夫</h1> 8 <p>お花は専用BOXに入れてポストにお届け。不在で受け取れなくても安心して使えます。</p> 9 </div> 10 <div class="top top-3"> 11 <h1>FLOWERなら<br>いつでもかわいく飾れる</h1> 12 <p>専用の花器を使うと、届いたお花をさっと生けるだけでかわいい空間のできあがり。お花のある暮らしがもっと楽しくなります。</p> 13 </div> 14 </div>

css

1.content-top{ 2 display: flex; 3} 4.top{ 5 display: block; 6 padding: 8vmin 6vmin; 7 min-height: 540px; 8 height: 80vh; 9 background-repeat: no-repeat; 10 background-size: cover; 11} 12.top h1{ 13 letter-spacing: 0.2vh; 14 color: #fff; 15 font-weight: normal; 16} 17.top p{ 18 color: #fff; 19 font-weight: normal; 20 font-size: 2.5vh; 21} 22.top-1{ 23 flex-grow: 1; 24 background-image: url(https://s3-ap-northeast-1.amazonaws.com/flower-production-assets/assets/web/home/bg_service01-01ee576583ddad054106d9f2dc78caf78be6c829383351a4fbc99ac5a566020a.jpg); 25} 26.top-2{ 27 flex-grow: 1; 28 background-image: url(https://s3-ap-northeast-1.amazonaws.com/flower-production-assets/assets/web/home/bg_service02-cd59d8cd17b05503a9fc3eeae42d618d0cc19b2277b581f5db275d5dde09e94d.jpg); 29} 30.top-3{ 31 flex-grow: 1; 32 background-image: url(https://s3-ap-northeast-1.amazonaws.com/flower-production-assets/assets/web/home/bg_service03-4c44f872ed6f7ed3007faeb109b1e03ceabcdb3106ba54392a5457a159a0f2ab.jpg); 33}

補足情報(FW/ツールのバージョンなど)

https://flowr.is/

ここが模写に使用させていただいているサイトです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

flexboxの各種プロパティの仕様についてはこちらのサイトがわかりやすいです。以下、ここから引用しながら説明します。
https://www.webcreatorbox.com/tech/css-flexbox-cheat-sheet

flex-growは

親要素に余ったスペースがあった場合、指定のある子要素が他の子要素に対してどれくらい伸びるかを指定します。

というものです。記載されているコードの該当の箇所では、そもそも親要素に余ったスペースがないので、伸びる余地がなく、flex-growは意味のない指定になっています。
flex-growを動作させて幅を揃えるには親要素に余ったスペースを作ったうえで、伸びる前から子要素のサイズが揃っている必要があります。(flex-growで指定できるのは伸び率だけで、元の幅には関知しません)
具体的には以下のように書けば揃うはずです。

top { width: 10%; /* わかりやすく極端に小さい幅にしてます */ flex-grow: 1; }

ちなみに、縮み方を指定するflex-shrinkというものもあります。

flex-grow と逆で、親要素に余ったスペースがなくすべての子要素が入り切らない場合、指定のある子要素が他の子要素に対してどれくらい縮むかを指定します。

flex-growの初期値は0のため、何も設定しなければ要素が勝手に伸びることはありませんが、
flex-shrinkの初期値は1なので、幅が足りなければ勝手に要素は縮みます。
これを利用すれば、親要素からはみ出るように幅を一律に指定するだけで要素の幅は勝手に揃います。
具体的には以下のように書けば揃うはずです。

top { width: 100%; /* わかりやすく極端に広い幅にしてます */ /* flex-shrinkやflex-growを設定する必要はありません */ }

試してみてください。

投稿2020/03/02 03:25

hwatarig

総合スコア461

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

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

passeri

2020/03/02 03:30

「伸びる前から子要素のサイズが揃っている必要があります。(flex-growで指定できるのは伸び率だけで、元の幅には関知しません)」ここの理解が足りていませんでした。問題も解決しました。ご丁寧に教えてくださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問