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

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

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

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

CSS

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

CSSフレームワーク

CSSフレームワークは、Webページのスタイルを指定する言語であるCSSを容易に構築するためのツールです。ツイッター社が開発した「Bootstrap」や段組レイアウトが可能な「Foundation」など様々なCSSフレームワークがあります。

Q&A

2回答

1160閲覧

margin:0 auto;で中央寄せにした要素に幅を持たせたい

B_J

総合スコア15

CSS3

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

CSS

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

CSSフレームワーク

CSSフレームワークは、Webページのスタイルを指定する言語であるCSSを容易に構築するためのツールです。ツイッター社が開発した「Bootstrap」や段組レイアウトが可能な「Foundation」など様々なCSSフレームワークがあります。

0グッド

0クリップ

投稿2021/07/04 04:31

編集2021/07/04 05:48

下記のコードで要素が3つあります。
レスポンシブ対応にしたいため、ブラウザを縮めても中央寄せのまま縮まっていって、
max-widthが768になったらスマホ対応画面にします。

ところが、768になる前(もっと大きい段階)から、
中央寄せが崩れてしまいます。

中央寄せになったまま768のギリギリまで縮まっていくにはどうすればいいでしょうか?

html

1 2 <footer class="footer"> 3 <ul class="f-menu"> 4 5 <li class="f-list"> 6 <div class="circle"> 7 <i class="fas fa-dumbbell fa-6x" data-fa-transform="down-9.5 right-7.5"></i> 8 9 <div class="t-1">あいうえお</div> 10 <div class="t-2">かきくけこ</div> 11 </div></li> 12 13 <li class="f-list"> 14 <div class="circle"> 15 <i class="fas fa-chalkboard-teacher fa-6x" data-fa-transform="down-9.5 right-7.5"></i> 16 17 <p class="t-1">さしすせそ</p> 18 <p class="t-2">たちつてと</p> 19 </div></li> 20 21 <li class="f-list"> 22 <div class="circle"> 23 <i class="far fa-life-ring fa-6x" data-fa-transform="down-9.5 right-9.5"></i> 24 25 <p class="t-1">なにぬねの</p> 26 <p class="t-2">はひふへほ</p> 27 </div></li> 28 </ul> 29 30 31 </footer>

css

1.footer{ 2 height: 230px; 3 background-color: black; 4 display: flex; 5 6} 7 8.circle { 9 width: 225px; 10 height: 225px; 11 border-radius: 50%; 12 background: #fff;/*背景色*/ 13 border: 6px solid #121212; /*枠の設定*/ 14 margin-top: -192px; 15  margin:-192px 55px 0px 45px; 16 17 } 18 19.f-menu{ 20 display: flex; //3つのアイコンを横並びにするために設定 21 justify-content: space-between; 22 margin: 0 auto; 23 24} 25 26.f-list{ 27 28 z-index: 5; 29 30 width: auto; 31} 32.t-1{ 33 color: #fff; 34 margin: 125px 0px 0px 50px; 35 font-size: 23px; 36 font-weight: bold; 37} 38 39 40.t-2{ 41 color: #fff; 42 margin: 7px -2px 0px -14px; 43 font-weight: bold; 44} 45 46

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

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

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

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

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

Lhankor_Mhy

2021/07/04 05:23

コードを試してみましたが、「中央寄せ」になっていないように見えました。 ご提示いただいていない部分のコードが必要なのではないでしょうか。
B_J

2021/07/04 05:24

margin: 0 auto;でなってませんか?
Lhankor_Mhy

2021/07/04 05:27

はい、なっていないですね。 すみませんが、質問に提示するコードで問題が再現することを、ご質問者の環境で確認してから質問をしてください。 それぞれが違うコードを見ながら違う現象について議論をするのは、お互いに時間の無駄ではありませんか? https://twitter.com/lhankor_mhy/status/1169432868705075200
B_J

2021/07/04 05:37

失礼しました。白い丸が3つあると思うのですが、それの幅をもっと100pxほどに広げたママ縮んでいってほしいのです
B_J

2021/07/04 05:46

すみません、最初は100pxほどの余白が3つの丸には設定していて、縮めていくと、中央に寄ったままどんどん縮んでいってほしいのです。 言い方を間違えました。失礼しました。縮めていくと丸と丸の距離はもちろん中央寄せにしていくので縮んでいくようにしたいんです。
Lhankor_Mhy

2021/07/05 01:04

現状のコードでそのようになっているように見えます。
B_J

2021/07/05 01:46

確認しましたが、ならないのです、、、
Lhankor_Mhy

2021/07/05 01:50

ああ、失礼しました。当方でいろいろ試していて混乱しました。 回答します。
B_J

2021/07/05 02:22

ありがとうございます。ダメです・・・。全体的に広がり過ぎてしまいますし、ブラウザを縮めていっても、やはり途中から中央寄せじゃなくなってしまいます・・・難問ですね・・・
B_J

2021/07/05 02:28

そもそも、margin:0 auto;って設定すると、その要素同士の余白は自由に設定できなくなるんでしょうか?中央寄せにするのと、自由に余白を設定することは、両方は出来ない?!
Lhankor_Mhy

2021/07/05 02:52

ちょっと、どうしたいのかがよくわからないです。
B_J

2021/07/05 02:59

幅が768pxほど(スマホサイズ)に縮んでいくまで、中央寄せかつ3つの丸に幅100pxの余白を持たせた状態で縮小していきたいのです。 margin: 0 auto;を設定すると、3つがぴったりと並んでしまい、余白ができません。 それで、margin:0 auto;を設定しないで、余白を設定すると、今度は中央寄せができなくなります。できなくなるというか、途中まで中央寄せで進むのに、途中から中央寄せにならなくなってしまうんです 本当に困っています。誰も答えられる人が居ません
Lhankor_Mhy

2021/07/05 03:06

.circle の幅が225px、余白を100pxとすると、合計で875pxになり、768pxを超えますが……?
Lhankor_Mhy

2021/07/05 03:07

いずれにせよ、ちょっとご希望がわからなくなってきました。 質問を解読できたら、また回答します。
B_J

2021/07/05 03:10

質問をかえます。3つの丸にmargin: 0 auto;を設定したら中央寄せになりますよね?中央寄せしたままその3つの要素に自由に余白を設定することはできますか?またそれはどうやればいいですか?
Lhankor_Mhy

2021/07/05 03:16

縮んでいくとかそういうことは考えなくていいのですね? 中央寄せ かつ 3つの丸が固定間隔で配置されていればいい、ということでいいですか?
B_J

2021/07/05 03:20

考えたいです。 中央寄せにして、かつ3つの丸同士がある程度離れていて、中央寄せの状態で768PXまで縮んでいってほしいのです。イメージ湧きますでしょうか? 中央寄せのままブラウザを縮小させていくため、その3つの丸同士の余白はだんだん無くなってきます。 そして、768ぐらいの幅になったらほぼその3つの丸同士が横一列にくっついた感じになって、 スマホのレスポンシブ対応画面になるといった感じです
Lhankor_Mhy

2021/07/05 03:23

では、先の回答の通りではないですか? 3つの丸が離れていて、最終的にくっつきましたが。
B_J

2021/07/05 03:25

いえ、下記のご返信させていただいたとおり、ダメなのです・・・↓ ありがとうございます。ダメです・・・。全体的に広がり過ぎてしまいますし、ブラウザを縮めていっても、やはり途中から中央寄せじゃなくなってしまいます・・・難問ですね・・・
B_J

2021/07/05 03:28

あ、codepenでやったら、なりますね・・・。 なら、別のところが影響しているってことですかね・・・ 一歩進めました。 ほんとうにありがとうございます
B_J

2021/07/05 03:28

ただ、アドバイスいただいたコードですと、丸3つの要素が広がり過ぎているので、ここをなんとか、100pxの幅に設定できないでしょうか?
Lhankor_Mhy

2021/07/05 03:49

縮んでいくことは考えなくていいのですか?
B_J

2021/07/05 04:11

いえ、レスポンシブ対応させるためさきほどのようにしたいです
Lhankor_Mhy

2021/07/05 04:12

最大100pxにしたいということですか?
B_J

2021/07/05 04:14

最初の状態、縮めていない状態(デスクトップ対応ブラウザの幅)で100pxってことです
Lhankor_Mhy

2021/07/05 04:18

余白の最大が100pxで、そこから縮むのは成り行き、という理解で合っていますか? それとも、たとえばスクリーンが1600pxの時に100pxで1400pxの時に80px、みたいな処理をしたいということですか?
B_J

2021/07/05 04:31

デスです!そんなイメージじです。ただ、結果として768あたりで、ぴったりくっつくぐらいにはなります
B_J

2021/07/05 04:31

ですです!は前者です!ってことです
B_J

2021/07/05 07:34

下記のようにやったらできました。 ```css .footer{ height: 230px; background-color: black; //display: flex; } .circle { /*width: 225px;*/ width: 225px; box-sizing: border-box; /* 追加 */ height: 225px; border-radius: 50%; background: #fff;/*背景色*/ border: 6px solid #121212; /*枠の設定*/ margin-top: -192px; //margin:-192px 55px 0px 45px; } .f-menu{ display: flex; /* //3つのアイコンを横並びにするために設定 */ justify-content: space-between; margin: 0 auto; max-width: 867px; /* 追加 */ } .f-list{ z-index: 5; width: auto; } .t-1{ color: #fff; margin: 125px 0px 0px 50px; font-size: 23px; font-weight: bold; } .t-2{ color: #fff; margin: 7px -2px 0px -14px; font-weight: bold; } ``` ポイントは、 ```css .f-menu{ display: flex; /* //3つのアイコンを横並びにするために設定 */ justify-content: space-between; margin: 0 auto; max-width: 867px; /* 追加 */ } ``` です。margin: 0 auto;で中央寄せにして、かつmax-width: 867px; をすることで、3つの円の余白も実質調整できました。 ただ、footerなどに、max-width:~pxなどの設定は何故不要なのでしょうか?
Lhankor_Mhy

2021/07/05 07:41

私の回答通りでしたね。お役に立てたようで何よりです。 footer に max-width を入れるとマージン分の余白がなくなると思います。
B_J

2021/07/05 07:46

あと、 .footer{ height: 230px; background-color: black; //display: flex; display: flex;を有効にしちゃうと、なぜ円同士が最初っからくっついちゃうのですか?
B_J

2021/07/05 07:47

たとえば、footer に max-width:1078px と入れると、3つの円が全体的に左側に移動しました。 なぜ?!といった感じです
B_J

2021/07/05 07:51

そうなんです、教えて頂いたとおりですが、max-width: 968px; /* 追加 */の部分だけ、幅を867pxに変えています。 いろいろと教えて下さい。 どのように考えて、アドバイスいただいたコードになったのか、知りたいです。 宜しくお願いします。
Lhankor_Mhy

2021/07/05 08:02

>display: flex;を有効にしちゃうと、なぜ円同士が最初っからくっついちゃうのですか? フレックスアイテム(display:flexの子要素)の幅は内容物依存になるからです。 つまり、最小限まで小さくなるので、justify-content: space-between のための余白が残らないのです。 --- >footer に max-width:1078px と入れると、3つの円が全体的に左側に移動しました .footer には、margin: 0 auto がないからです。
B_J

2021/07/05 08:20

少しわかってきました。ありがとうございます。 内容物依存とはどこの内容物に依存?するのでしょうか? .footer には、margin: 0 auto がないからです。 ➡でもfooter自体にはもともと幅はあるものなのでは?
Lhankor_Mhy

2021/07/05 09:04

フレックスアイテムの子要素です。display:flex から見ると 孫要素ですね。 たとえば、 display:flex の要素 子要素(フレックスアイテム) 孫要素 = 幅500pxの画像 とあった時に、子要素の幅は500pxになります。
Lhankor_Mhy

2021/07/05 09:08

> でもfooter自体にはもともと幅はあるものなのでは? まず、マージンの初期値は0です。これは何も指定しない場合、マージンはゼロになるということです。 つまり、margin-left: 0 なので左によります。 margin: 0 auto を指定した場合は、margin-left: auto なので、中央に寄ります。
B_J

2021/07/05 09:40

いつもあなたさまほど親身になってくださる方はおらず本当に感謝してます、またへんしんします
B_J

2021/07/05 18:10

どのように考えて、アドバイスいただいたコードになったのか、知りたいです。 宜しくお願いします。
Lhankor_Mhy

2021/07/06 06:54

まず、「結果として768あたりで、ぴったりくっつく」ということでしたので、768/3=256pxまで.f-listの幅を広げました。(そうしないと、ぴったりくっつかないはずなので) そして、余白を開けるためには、.f-menu の幅が伸縮しないといけないので、.footer の flex を外しました。 最後に、余白が最大100pxということなので、768+100+100=968pxで .f-menu の幅を制限しました。
guest

回答2

0

以下のようにするとどうでしょうか?

CSS

1.footer{ 2 height: 230px; 3 background-color: black; 4 /* display: flex; 削除*/ 5 6} 7.f-menu{ 8 display: flex; /* //3つのアイコンを横並びにするために設定 */ 9 justify-content: space-between; 10 margin: 0 auto; 11 12}

補足依頼欄に合わせて追記

css

1.footer{ 2 height: 230px; 3 background-color: black; 4 /* display: flex; 削除*/ 5 6} 7 8 9.circle { 10 /*width: 225px;*/ 11 width: 256px; 12 box-sizing: border-box; /* 追加 */ 13 height: 225px; 14 border-radius: 50%; 15 background: #fff;/*背景色*/ 16 border: 6px solid #121212; /*枠の設定*/ 17 margin-top: -192px; 18  margin:-192px 55px 0px 45px; 19 20 } 21 22 .f-menu{ 23 display: flex; /* //3つのアイコンを横並びにするために設定 */ 24 justify-content: space-between; 25 margin: 0 auto; 26 max-width: 968px; /* 追加 */ 27 28 }

投稿2021/07/05 01:52

編集2021/07/05 04:57
Lhankor_Mhy

総合スコア36074

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

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

B_J

2021/07/05 05:51 編集

ありがとうございます。ダメでした・・・。3つの丸が、楕円みたいになってしまい、縮小時の現象 も変わりません・・・
Lhankor_Mhy

2021/07/05 05:53

幅を広げたので楕円になるのは仕方がないですね。そこらへんは調整してください。
B_J

2021/07/05 05:53

それに、space-betweenがきいてるせいか、3つの丸がひろがりすぎちゃいます
Lhankor_Mhy

2021/07/05 05:54

広がりすぎる、という現状は、当方では確認できないです。
guest

0

下記のようにやったらできました。

css

1 2.footer{ 3 height: 230px; 4 background-color: black; 5 //display: flex; 6 7 8} 9.circle { 10 /*width: 225px;*/ 11 width: 225px; 12 box-sizing: border-box; /* 追加 */ 13 height: 225px; 14 border-radius: 50%; 15 background: #fff;/*背景色*/ 16 border: 6px solid #121212; /*枠の設定*/ 17 margin-top: -192px; 18 //margin:-192px 55px 0px 45px; 19 20 } 21 22 .f-menu{ 23 display: flex; /* //3つのアイコンを横並びにするために設定 */ 24 justify-content: space-between; 25 margin: 0 auto; 26 max-width: 867px; /* 追加 */ 27 28 } 29 30.f-list{ 31 32 z-index: 5; 33 34 width: auto; 35} 36.t-1{ 37 color: #fff; 38 margin: 125px 0px 0px 50px; 39 font-size: 23px; 40 font-weight: bold; 41} 42 43 44.t-2{ 45 color: #fff; 46 margin: 7px -2px 0px -14px; 47 font-weight: bold; 48}

ポイントは、

css

1 .f-menu{ 2 display: flex; /* //3つのアイコンを横並びにするために設定 */ 3 justify-content: space-between; 4 margin: 0 auto; 5 max-width: 867px; /* 追加 */ 6 7 }

です。margin: 0 auto;で中央寄せにして、かつmax-width: 867px; をすることで、3つの円の余白も実質調整できました。

ただ、footerなどに、max-width:~pxなどの設定は何故不要なのでしょうか?

投稿2021/07/05 07:34

B_J

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問