現在ECサイトを模写しています。
リンク内容
メインのimgとinfoをflexboxで横並びにしています。
ソースコードを確認したところ、imgにmax-widthを400px、flex-shrink: 0;と指定していました。
html
1<div id="item" class="wrapper"> 2 <div class="item-image"> 3 <img src="img/item.jpg" alt=""> 4 </div> 5 6 <div class="item-info"> 7 <h1 class="item-title">TOTALLY Short Sleeve Shirt</h1> 8 <p> 9 テキストテキストテキストテキストテキストテキストテキスト 10 テキストテキストテキストテキストテキストテキストテキスト 11 テキストテキストテキストテキストテキストテキストテキスト 12 テキストテキストテキストテキストテキストテキストテキスト 13 テキストテキストテキストテキストテキストテキストテキスト 14 テキストテキストテキスト 15 </p>
css
1#item { 2 display: flex; 3 justify-content: space-between; 4 margin-bottom: 100px; 5} 6 7#item .item-image { 8 max-width: 400px; 9 flex-shrink: 0; 10 margin-right: 60px; 11} 12#item .item-info p { 13 margin-bottom: 30px; 14 line-height: 1.9; 15}
疑問が何点かあります。
①imgとinfoにそれぞれwidthを付けたら見た目はほとんど同じになりました。(imgに50%,infoに43%を指定し、justify-content:space-betweenで間に余白を作りました)
これまで学習してきた中で、flexboxで横並びにした後両者の幅を指定する際、いつも上記のようにwidthで調整して指定していたので今回も同じようにしたのですが、ソースのようにmaxwidthとflex-shrinkを指定する理由は何でしょうか?widthの書き方でも間違いではないのでしょうか?
②上記ソースでmax-widthを400pxと指定していますが、今回模写しているこのサイトの「コンテンツ部分の最大幅は800px」と指定されていたため、その半分の幅としてこの数値が指定されたという認識で正しいのでしょうか?
また、なぜwidthではなくmax-widthなのでしょうか?
③flex-shrink: 0;とあり、画像が縮まないようにとの説明がありました。
flex-shrinkのデフォルト値は1なので、本来ならimgもinfoもどちらも同じだけ(1:1)縮んでしまうのを、imgの方だけは縮ませず、infoの方だけ縮ませるためにこのような指定をしているという認識で正しいのでしょうか?
ブレークポイントは896pxでレスポンシブのレイアウトに変化するのでその手前まで幅を狭くして確かめましたが、infoの方が縮んでいるようには見受けられず、よく理解ができませんでした。
デベロッパーツールでこれを消してみたところ、画像だけがとても小さいサイズになり、それも理由がよくわかりません。
いろいろなサイトで説明を読みましたが、なかなか理解ができません。
すみませんが初心者ですので、わかりやすく教えていただけると幸いです。
どうぞよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/05 14:46
回答1件
0
ベストアンサー
①ソースのようにmaxwidthとflex-shrinkを指定する理由は何でしょうか?widthの書き方でも間違いではないのでしょうか?
画像幅を400px以下に、という意図だと思います。
width でパーセンテージ指定した場合は固定幅になるので、スクリーンサイズによってはだいぶ違うレイアウトになるはずです。
よく観察をされることをおすすめします。
②上記ソースでmax-widthを400pxと指定していますが、今回模写しているこのサイトの「コンテンツ部分の最大幅は800px」と指定されていたため、その半分の幅としてこの数値が指定されたという認識で正しいのでしょうか?
そのあたりのデザインの意図は本人に聞かないとわからないです。
また、なぜwidthではなくmax-widthなのでしょうか?
その意図はデザインした人に聞かないとわからないですが、おそらく縦長画像など画像幅が小さい時に固定幅にして引き延ばしたくたくないからではないですか?
繰り返しになりますが、width: 400px
は常に400px幅ですが、max-width: 400px
は400px以下という意味です。
flex-shrinkのデフォルト値は1なので、本来ならimgもinfoもどちらも同じだけ(1:1)縮んでしまうのを、imgの方だけは縮ませず、infoの方だけ縮ませるためにこのような指定をしているという認識で正しいのでしょうか?
はい。
ですが、どちらかというと画像を小さくさせない意図の方が強いでしょう。
デベロッパーツールでこれを消してみたところ、画像だけがとても小さいサイズになり、それも理由がよくわかりません。
ご提示のコードだけでは再現しませんでしたが、右カラムに固定幅が存在するならば、そういったふるまいになるはずです。
なぜそうなるかは、「infoの方だけ縮ませるためにこのような指定をしている」というご理解の通りです。
もしかすると、flex-shrink
というよりも、width: auto
flex-basis: auto
のふるまいをご理解されていないのが原因かもしれない、と感じました。
content
flex アイテムの内容物に基づいて、自動的にサイズを決めます。メモ: この値は Flexible Box Layout の初期リリースでは定義されていませんでしたので、古い実装では対応していない場合があります。 main size (width または height) を auto にするのと合わせて auto を使用することで、同等の効果を得られます。
投稿2021/11/05 00:50
編集2021/11/05 02:46総合スコア36981
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/05 05:58
2021/11/05 06:32
2021/11/05 14:37
2021/11/06 01:42 編集
2021/11/06 03:09
2021/11/06 03:29
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。