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

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

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

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

HTML5

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

1回答

1026閲覧

flexboxにおけるwidthとflex-basisの違いについて

Silky

総合スコア34

CSS3

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

HTML5

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

1グッド

1クリップ

投稿2019/09/11 21:42

編集2019/09/11 21:44

flexboxにおける幅の指定、widthとflex-basisの違いがよく理解できていません。
試しにコードを書いてみたのですが、どちらを使用しても結果が同じになります。

flexboxにおけるwidthとflex-basisの違いと、その使い分けについてご教示いただけませんでしょうか?

(試しに書いたコードは下記の通りです。)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="css/test.css"> </head> <body> <div class="item-list"> <div class="item"> <div class="img-wrapper"> <img src="img/img01.jpg" alt=""> </div> <div class="txt-wrapper"> <h2 class="txt-ttl">title</h2> <p class="txt">abc</p> </div> </div> <div class="item"> <div class="img-wrapper"> <img src="img/img02.jpg" alt=""> </div> <div class="txt-wrapper"> <h2 class="txt-ttl">title</h2> <p class="txt">abc</p> </div> </div> <div class="item"> <div class="img-wrapper"> <img src="img/img03.jpg" alt=""> </div> <div class="txt-wrapper"> <h2 class="txt-ttl">title</h2> <p class="txt">abc</p> </div> </div> </div>
.item{ display: flex; flex-wrap: wrap; } .item-list .item:nth-of-type(2n){ flex-direction: row-reverse; } .item > * { /* width: 50%; */ flex-basis : 50% /* widthとflex-basisの違いは何? */ } @media(max-width: 768px) { .item > * { /* width: 100%; */ flex-basis: 100%; } } .img-wrapper img{ width: 100%; height: 100%; }

①width:50% または flex-basis:50%の場合
イメージ説明

②width:100% または flex-basis:100%の場合
イメージ説明

bun_suke👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

flex-basisとwidthのどちらを使っても同じ結果になったのはflex-basisのデフォルト値がautoのためです。

  1. flex-basisがauto
  2. widthの値を読みに行く
  3. widthの値をflex-basisの値にセットする

結果としてどちらも同じ結果になります。

個人的にはflex-basisが使える場合は優先してflex-basisを使って設定しています。
flex-basisを使ったほうがwidthを使うよりも明示的になるので読みやすいコードになると思っています。

参考:
https://www.w3.org/TR/css-flexbox-1/#flex-basis-property
https://gedd.ski/post/the-difference-between-width-and-flex-basis/

投稿2019/09/12 00:08

TetsuyaNegishi

総合スコア44

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

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

Silky

2019/09/12 11:50

ご回答ありがとうございます。 貼っていただいたリンクも非常に参考になりました。 widthとflex-basisの双方が存在する場合はflex-basisが優先され、 また特にflex-basisが設定されていない初期値autoの状態でwidthがある場合は、widthの方が優先されるんですね! また、リンク先のflex-basisはflexboxの箱に入れる前の大きさであって、入れた後の大きさは保証されていない(箱の大きさが小さいと、アイテムが縮んで大きさを担保できない)というのも勉強になりました。 結局最終的に優先されるのはflex-basisなので、わざわざwidthで指定する必要ないですね。 勉強になりました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問