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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

864閲覧

カード型レイアウト、3行にするとレイアウトが崩れてしまいます

niconic73027793

総合スコア215

CSS3

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

1クリップ

投稿2022/01/03 02:20

編集2022/01/03 02:34

カード型のレイアウトの勉強をしています。

【コーディングの解説】HTMLとCSSでカードグループをつくる

上記のサイトをみてやっていくと

2行のレイアウトは

<div class="card-group"> <div class="card"> <div class="card__imgframe"> </div><!-- /.card__imgframe --> <div class="card__textbox"> <div class="card__titletext"> タイトルが入ります。タイトルが入ります。タイトルが入ります。 </div><!-- /.card__titletext --> <div class="card__overviewtext"> 概要が入ります。概要が入ります。概要が入ります。概要が入ります。 </div><!-- /.card__overviewtext --> </div><!-- /.card__textbox --> </div><!-- /.card --> <div class="card"> <div class="card__imgframe"> </div><!-- /.card__imgframe --> <div class="card__textbox"> <div class="card__titletext"> タイトルが入ります。タイトルが入ります。タイトルが入ります。 </div><!-- /.card__titletext --> <div class="card__overviewtext"> 概要が入ります。概要が入ります。概要が入ります。概要が入ります。 </div><!-- /.card__overviewtext --> </div><!-- /.card__textbox --> </div><!-- /.card --> <div class="card"> <div class="card__imgframe"> </div><!-- /.card__imgframe --> <div class="card__textbox"> <div class="card__titletext"> タイトルが入ります。タイトルが入ります。タイトルが入ります。 </div><!-- /.card__titletext --> <div class="card__overviewtext"> 概要が入ります。概要が入ります。概要が入ります。概要が入ります。 </div><!-- /.card__overviewtext --> </div><!-- /.card__textbox --> </div><!-- /.card --> <div class="card"> <div class="card__imgframe"> </div><!-- /.card__imgframe --> <div class="card__textbox"> <div class="card__titletext"> タイトルが入ります。タイトルが入ります。タイトルが入ります。 </div><!-- /.card__titletext --> <div class="card__overviewtext"> 概要が入ります。概要が入ります。概要が入ります。概要が入ります。 </div><!-- /.card__overviewtext --> </div><!-- /.card__textbox --> </div><!-- /.card --> </div><!-- /.cardgroup -->
.card-group{ margin-left: auto; margin-right: auto; max-width: 640px; width: 90%; height: auto; /* ポイント1 */ display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; } /* ポイント2 */ .card-group > :nth-child(2n){ margin-left: 20px; } /* ポイント3 */ .card-group > :nth-child(n+3){ margin-top: 20px; } .card{ /* ポイント4 */ width: calc((100% - 20px * 1) /2); height: auto; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,.2) } .card__imgframe{ width: 100%; height: auto; padding-top: 56.25%; background: #bbb; box-sizing: border-box; } .card__textbox{ width: 100%; height: auto; padding: 20px 18px; background: #fff; box-sizing: border-box; } .card__textbox >*+*{ margin-top: 10px; } .card__titletext{ font-size: 20px; font-weight: bold; line-height: 125%; } .card__overviewtext{ font-size: 12px; line-height: 150%; }

サイトの説明通りうまくいくのですが、

.card-group > :not(:nth-child(3n-2)){ margin-left: 20px; } ■カードレイアウトの始め以外に余白を空ける指定 否定セレクタ(:not)と1行目の要素(3n-2)の組み合わせで最初の行以外の要素を選択 .card{ width: calc((100% - 20px * 2) / 3); } ■余白の数を3で割る

の指定をすると、

イメージ説明

記述の仕方がまちがっているのでしょうか?

コードペンURL

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記の修正でどうでしょう。

css

1/* ポイント2 */ 2.card-group > :nth-child(3n - 1){ 3 margin: 0 20px; 4} 5/* ポイント3 */ 6.card-group > :nth-child(n+4){ 7 margin-top: 20px; 8}

やっていることは、
ポイント2 (3n - 1)番目の要素(2列目の要素)の左右にマージン
ポイント3 4番目以降の要素の上にマージン

IE対応を考慮しなくてもいいのなら、gapプロパティを使うのが簡単です。
親に設定するだけで、ポイント2ポイント3の設定は不要です。

css

1.card-group{ 2 margin-left: auto; 3 margin-right: auto; 4 max-width: 640px; 5 width: 90%; 6 height: auto; 7 /* ポイント1 */ 8 display: flex; 9 flex-direction: row; 10 flex-wrap: wrap; 11 justify-content: flex-start; 12 gap: 20px; /* 追加 */ 13}

投稿2022/01/03 06:53

hatena19

総合スコア34075

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

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

niconic73027793

2022/01/03 07:30

ありがとうございます! そういう記述の方法もあったんですね。 4行目だと n+4 にする設定はサイトには載ってませんでした。 gap を使った指定は楽ですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問