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

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

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

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

Q&A

解決済

2回答

27875閲覧

flexboxで親要素の幅を子要素に合わせる方法

pegy

総合スコア243

CSS

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

0グッド

2クリップ

投稿2018/08/16 02:28

下記のようなコードで親要素.wrapperのwidthを子要素.containerのwidthに応じて伸縮させたい
と考えております。もちろんブロック要素のため.wrapperは一杯にその親要素の幅になってしまいます。

これを子要素の幅に合わせる場合、子要素にdisplay:inline指定をすればとも書いてあったのですが
効果がありませんでした。flexboxを使用しているためかもしれませんが、原因が分かりません。

下記のようにflexboxを使用しつつ子要素の幅に親要素の幅を合わせることは可能でしょうか?
宜しくお願い申し上げます。

jsfiddle

html

1<div class="wrapper"> 2 <div class="container">piyo</div> 3 <div class="container after">hoge</div> 4 <div class="container after">fuga</div> 5</div>

css

1.wrapper{ 2 display:flex; 3 background:#b8b8b8; 4 padding:20px; 5} 6 7.container{ 8 border:1px solid #000000; 9 width:100px; 10 display:inline;//?? 11} 12 13.after{ 14 margin-left:10px; 15}

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

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

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

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

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

HayatoKamono

2018/08/16 03:25

子要素の幅は固定なのですよね?
pegy

2018/08/16 03:56

コメント有難うございます。はい、ご理解の通りです。
guest

回答2

0

ベストアンサー

Demo

イメージ説明
https://codepen.io/anon/pen/ejwYqE

HTML

<div class="wrapper"> <div class="flex-container"> <div class="flex-item"></div> <div class="flex-item"></div> <div class="flex-item"></div> </div> </div>

CSS

.wrapper { display: inline-block; background-color: green; } .flex-container { display: flex; background-color: gray; padding: 20px; } .flex-item { height: 50px; width: 100px; } .flex-item:nth-of-type(odd) { background-color: red; } .flex-item:nth-of-type(even) { background-color: black; } .flex-item:nth-of-type(n + 2) { margin: 0 0 0 10px; }

投稿2018/08/16 03:40

編集2018/08/16 04:06
HayatoKamono

総合スコア2415

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

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

pegy

2018/08/16 04:40

コメントを頂きありがとうござます。 更に親要素を設定して全体をinline-block要素化してしまうのですね! 無事解決しました、cssは本当になれることに大変ですが、こうして そんなことができるんだ!と発見があるたびに楽しいです〆 御礼申し上げます。
HayatoKamono

2018/08/16 05:08

flexboxは覚えること多いですが、頑張ってくださいー!
guest

0

イメージ説明

css

1/*変更点*/ 2.wrapper{ 3 display: inline-block; 4} 5.container{ 6 display: inline-block; 7}

こうですね

ちなみに,CSSのコメントアウトは/* comment */しかないので,うっかり//commentとかしちゃうと,その後にかいたCSSが効かなくなるので注意です

あと,IE,Edge等を無視すれば,widthにキーワード値をいれて調節できます

can I use

投稿2018/08/16 03:33

liveasnotes

総合スコア1284

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

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

pegy

2018/08/16 04:11

コメント有難うございます。flex-boxは捨てて全てin-line要素で処理するということですね。 コメントアウトについても有難うございます。失礼いたしました。 fit-contentプロパティは調べてみたのですが、子要素の調整ではないでしょうか?
liveasnotes

2018/08/16 04:48 編集

fit-content等の値は,子要素に合わせて親要素を調整する,Widthのプロパティ値ですが,上述の通り,ブラウザ対応が行き渡っていないので,IE,Edge対策として,妥協版CSSを書くか,ポリフィルを当てることになります あと,inline要素ではなく,inline-block要素です inline-blockは,名前の通りinlineとblockの中間のような仕様になっています クラス名からして,中に複数の要素をいれるものと思われたので,inline要素ではなく,inline-block要素にしています widthをcalc()や%で指定したり,さらに複雑なスタイルを当てた要素を内包させる予定なら,.containerにdisplay:flexした方が良いかもしれません 現時点では,そこまでの対応は必要なさそうだったので,できるだけ単純なコードにしています もっとも,子要素の幅が「完全に」固定なら, .wrapper{ width: 360px; } の追記と, .container{ display: inline; } の削除だけで済みます HTMLの書き方については,その「文書」の部品がもつ意味によって変わってきますので,現時点では書き換えを進めてはいませんが,もしリンクであれば <nav>  <ul>   <li><a href="#a">linkA</a></li>   <li><a href="#b">linkB</a></li>   <li><a href="#c">linkC</a></li>  </ul> </nav> というようなマークアップをした上で,CSSを書くと良いです nav要素は一見余計なように見えますが,複雑なスタイルを当てる際に,サポート役になってくれることもあるので,温かい目で見守ってあげてください
pegy

2018/08/16 05:34

なるほど、コメント有難うございました。 chromeで子要素のwidthのプロパティ値にfit-contentを設定してうまくいかなかったので、もう一度仕様を見直してみます。 あまり使い慣れてはいないのですが、アンカータグを横並びにする場合には<ul><li>要素が良いとされているのですね。 <nav>タグについては、全く使用したことがないため、この機会にその持ち味を勉強してみようと思います!改めて有難うございました!
liveasnotes

2018/08/16 06:55

>子要素のwidthのプロパティ値にfit-content 回答に添えたリンク先の記事を読んでもらえれば分かると思うのですが,そのキーワード値は「親要素に」かけるものです.他に,min-content, max-content, fit-content, border-box, content-box, available...などがあり,これらを「親要素に」かけることで,「子要素の幅」に合わせて,「親要素のwidth」を変えることができます.もちろん,内包要素がなければ,効果はかなり分かりづらいと思うので,先述したQiitaの記事を参考に,色々試してみてください. あと,パソコンと向き合うときのコツの1つに,ボーっとする,というものがあります プログラミングにおいては,たった1文字の間違いでもエラーとなります.これを防ぐ方法は,基本的には画面と「にらめっこ」するしかないのですが,ボーっとしている瞬間に間違いのある箇所に気付く,というのもよくある話です.仕様書を確認するときも同様で,あまり意気込み過ぎず,スーパーのチラシでもみるような感じで,気楽に眺めると,脳のデフォルトモードネットワークも良く働いて,細かい違いに気付きやすくなります
pegy

2018/08/17 04:12

アドバイスありがとうございます。 とっても面白い考え方ですね。確かに気を張って調べ物をすることが多いので、思い切ってリラックスして楽しみながら時には取り組んでみることを心がけてみようと思います。 本当に感謝です!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問