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

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

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

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

HTML

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

CSS

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

Q&A

解決済

1回答

694閲覧

flexboxの子要素の表示を直したい

NASUBI73

総合スコア3

Flex

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/10/02 08:40

発生している問題

CSSのflex boxで正方形の可変ブロックを配置するようにしたところ(画像とコード参照)、中の要素のpが縦に表示されるようになってしまいました。
どうも孫要素のdivのwidthあたりでおかしくなってしまっているようなのですが、直し方が分かりません。

通常のpのように横表示で、できれば正方形の中央に表示できればと思います。
どなたかご教授ください。

該当のソースコード

HTML

1<div class="productList"> 2 <?php for ($i = 0; $i < 9; $i++) : ?> 3 <div class="product"> 4 <div> 5 <p>ここに商品</p> 6 </div> 7 </div> 8 <?php endfor; ?> 9</div>

css

1.productList { 2 display: flex; 3 flex-wrap: wrap; 4} 5 6.product { 7 flex: 0 0 calc((100% - 20px)/3); 8 9 margin-right: 10px; 10 margin-bottom: 10px; 11 background-color: #C0C0C0; 12} 13 14.product :before { 15 display: block; 16 content: ''; 17 padding-top: 100%; 18} 19 20.product:nth-child(3n) { 21 margin-right: 0; 22} 23 24.product div { 25 width: 0; 26 height: 0; 27 padding-bottom: calc(100% - 20px); 28} 29

イメージ説明

試したこと

chromeの検証モードでdivのwidthを無効にしたところ、表示が変化したのでここが原因か?と思いました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

.product:beforeのスタイルは削除。
.product divのwidthとheightを0にしない。
div要素の内容のp要素を中央に表示するなら、こんな感じかな。

CSS

1.productList { 2 display: flex; 3 flex-wrap: wrap; 4} 5 6.product { 7 flex: calc((100% - 20px)/3); 8 margin-right: 10px; 9 margin-bottom: 10px; 10 background-color: #C0C0C0; 11} 12 13.product:nth-child(3n) { 14 margin-right: 0; 15} 16 17.product div { 18 height: 100%; 19 padding-bottom: calc(100% - 20px); 20 display: flex; 21 align-items: center; 22 justify-content: center; 23}

投稿2020/10/02 09:28

Daregada

総合スコア11990

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

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

NASUBI73

2020/10/02 14:42

回答ありがとうございます!上記の通りやってみたら、おおよそは思い通りになりましたが、幅が2px足りなくなったのと、padding-bottomのせいか各要素の下に空白ができてしまい、解消できなかったため、しばらく調べて下記のサイトのサンプル通りに記述したところ、正方形のまま完璧に整えられました!よければご覧になってください。 https://wreath-ent.co.jp/blog-3560/ ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問