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

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

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

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

HTML5

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

Webサイト

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

コードレビュー

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

CSS

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

Q&A

解決済

1回答

800閲覧

カードレイアウトの横幅のcalc 計算で 余白を引いてさらに割る理由について

niconic73027793

総合スコア215

CSS3

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

HTML5

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

Webサイト

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

コードレビュー

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

CSS

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

0グッド

0クリップ

投稿2021/11/11 09:14

CSSのカード要素にについて勉強しています。

カードレイアウト勉強記事
» 忍者CODE あなたのコードが未来を灯す

上記のサイトのような場合だと、

<section> <ul class="card-wrap"> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card"> <h2 class="card__title">カードのタイトル</h2> <div class="card__img"></div> <div class="card__text"> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> <p>カードのテキストが入ります</p> </div> </li> <li class="card dammy"></li> <li class="card dammy"></li> <li class="card dammy"></li> </ul> </section> ul,li { list-style: none; } .card-wrap { display: flex; flex-wrap: wrap; justify-content: center; } .card { border: 1px solid; margin-right: 8px; margin-bottom: 16px; width: calc((100% / 3) - 8px); } .card.dammy { border: none; } .card:nth-child(3n) { margin-right: 0; } .card__title { font-weight: bold; font-size: 16px; padding: 8px; } .card__text { padding: 8px; font-size: 12px; } .card__img { width: 100%; height: 100px; background-color: #0e6edf; }

box の右側に8px ずつとっているから、全体を3で割った数に 8px 引くのはわかるのですが、

【HTML&CSS】カード型レイアウト(モジュール)のコーディング方法 | PENGIN BLOG

上記サイトの場合、

<ul class="bl_flexContainer"> <li class="el_flexItem"></li> <li class="el_flexItem"></li> <li class="el_flexItem"></li> <li class="el_flexItem"></li> <li class="el_flexItem"></li> </ul> .bl_flexContainer { display: flex; flex-wrap: wrap; padding: 20px; } .el_flexItem { width: calc(100% / 3 - 40px / 3); height: 300px; margin-right: 20px; margin-bottom: 30px; background-color: royalblue; }

余白を引いて さらに3で割っています。

何故3で割る必要があるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

画面の横幅を埋めるように1列にボックスが3つ並んでいて、
ボックス同士の隙間が20pxずつあるため、

(ボックスの幅 * 3) + (20px * 2) = 100%

となり、この式を変形すると

(ボックスの幅 * 3) + 40px = 100% (ボックスの幅 * 3) = 100% - 40px (ボックスの幅 * 3) / 3 = (100% - 40px) / 3 ボックスの幅 = (100% - 40px) / 3 ボックスの幅 = (100% / 3) - (40px / 3)

ということになります。

投稿2021/11/11 09:39

KAOsaka

総合スコア531

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

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

niconic73027793

2021/11/11 10:01

わかりやすい 計算式ありがとうございます。 calc(100% / 3 - 40px / 3) と (100% - 40px) / 3 は同じということですね。
niconic73027793

2021/11/11 10:18

でも https://ninjacode.work/course/HTML_CSS/2/5 上記のケースの場合、 .card { border: 1px solid; margin-right: 8px; margin-bottom: 16px; width: calc((100% / 3) - 8px); } 隙間が8px ずつあるのに width: calc((100% /3) - (16px /3)); 計算すると 表示があわないですね。
KAOsaka

2021/11/12 01:03

その場合border6本の幅も計算に入れる必要があります。
niconic73027793

2021/11/12 02:51

width: calc((100% / 3) - 22px); width: calc((100% / 3) - (22px / 3)); 余白6本も入れると上記になるわけですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問