
flexbox何度か使っていて、いまいちよくわからなかったんですが、最近になってやっとわかり始めたらすごく楽です。
floatと違ってclear:bothする必要ないですし、センタリングとかも簡単にできます。
下記サイトを参考にしていつもコーディングしています。
css3のflexboxを使うとすごい簡単になるレイアウトを試してみた
ただ、spanを使った改行つきテキストをflexboxでコーディングしたら思った通りに表示されず、レイアウト崩れをおこしてしまいました。
左に画像、右にテキストで縦に中央配置したかったんですが、こんな風にレイアウト崩れてしまうんです。

記述したhtmlとcssは下記のとおり
HTML
<ul class="box">
<li>
<figure><img src="img/icon1.png" alt=""></figure>
<span>アイコン</span><br>ここにはテキストが入ります。テキストの長さは様々です。
</li>
<li>
<figure><img src="img/icon2.png" alt=""></figure>
ここにはテキストが入ります。
</li>
<li>
<figure><img src="img/icon3.png" alt=""></figure>
ここにはテキストが入ります。テキストの長さは様々です。改行するものとしないものがあります。
</li>
</ul>
CSS
.box {
margin: 0 0 40px 20px;
border: 1px solid #efefef;
}
li {
display: flex;
align-items: center;
padding: 10px 20px;
}
li:not(:last-child) {
border-bottom: 1px solid #efefef;
}
span {font-size: 12px;}
img {
width: 32px;
height: 32px;
margin-right: 20px;
}
下記サイトを参考にしたら、どうやらレイアウト崩れを起こさずにコーディングできそうです。
CSSで中央寄せの方法いろいろメモ
テキスト部分をdivで囲んで、display:inline-block; を指定したら解決できました。
いろいろ試してみたら、display:inline-block;を指定しなくてもdivまたはpで囲うだけでまたはうまく表示されました。

書き直したhtmlは下記のとおり
HTML
<ul class="box">
<li>
<figure><img src="img/icon1.png" alt=""></figure>
<div><span>アイコン</span><br>ここにはテキストが入ります。テキストの長さは様々です。</div>
</li>
<li>
<figure><img src="img/icon2.png" alt=""></figure>
ここにはテキストが入ります。
</li>
<li>
<figure><img src="img/icon3.png" alt=""></figure>
ここにはテキストが入ります。テキストの長さは様々です。改行するものとしないものがあります。
</li>
</ul>
display:flex;を指定した直下のタグを横並びに表示しているので、間にspanを入れてしまうと変な風にflexboxが効いてしまうんですね。

これがさえわかれば、flexbox使って困ることないです。

