CSSを使ってリストの「li」要素を横並びにしてみよう

公開日: 2022.02.17
更新日: 2024.01.03
CSSを使ってリストの「li」要素を横並びにしてみよう

HTMLでリストを作成した時、もっと凝ったものを作成したいと思ったことがあると思います。
この記事では、CSSでリストの「li」要素を横並びにして、レイアウトを綺麗に見せる方法を紹介します。

基本のリスト

HTMLを使った、基本のリストの書き方を確認してみましょう。

<ul>
  <li>りんご</li>
  <li>バナナ</li>
  <li>ブドウ</li>
  <li>キウイ</li>
</ul>

自動的に「・」が先頭に付けられ、いかにもリストという感じですが、もっときれいに表示させたくなります。
それを実現するのがCSSです。

リスト要素を横並びで実現する方法

CSSでリストを横並びにする方法は、代表的なもので2種類あります。

・「Flexbox」を利用する
・「float」プロパティを利用する

方法1:「Flexbox」を利用する

CSSを使って簡単に横並びを実現する方法として挙げられるのが「Flexbox」です。
FlexboxはCSS3で導入されたCSSの機能で、要素の並びを自在に操ることができる大変便利なものです。

まずは、flexboxを使って横並びをするにあたり、最もシンプルなコードから紹介します。

CSS

ul {
  display: flex;
  list-style: none;
}

HTML

<ul>
  <li>りんご</li>
  <li>バナナ</li>
  <li>ブドウ</li>
  <li>キウイ</li>
</ul>
空白なしに横並びにした画像

「display: flex;」でFlexboxを宣言し「list-style: none; 」で先頭の「・」を消しています。

しかし、このようにただ並べるだけでは余白が無さすぎて窮屈です。
横並びにする時は余白(margin)を入れてみましょう。

ul {
  display: flex;
  list-style: none;
}

ul li {
  margin-left: 1em;
}
1文字分空白を開けて文字を横並びにした画像

このサンプルでは、左側に1em(1文字分)の余白を入れています。
シンプルなリストでは問題ありませんが、リストの外側にも装飾を入れる場合は

ul li {
  margin-left: 0.5em;
  margin-right: 0.5em;
}

と左右に設定すると、バランスが取れた表示になります。

方法2:「float」プロパティを利用する

CSS3以前から使われていたのが「float: left」を設定する方法です。
こちらもサンプルを確認してみましょう。

CSS

ul {
  list-style: none;
}

ul li {
  float: left;
  margin-left: 0.5em;
  margin-right: 0.5em;
}

HTML

<ul>
  <li>りんご</li>
  <li>バナナ</li>
  <li>ブドウ</li>
  <li>キウイ</li>
</ul>
floatを使用して文字を横並びにした画像

「Flexbox」とは異なり、「ul」要素ではなく「li」要素に設定するということに注意してください。

リスト外の要素を扱う場合

一見、2つの方法は同じように表示を実現しているように思いますが、リストの後に別の要素が入った場合の動きが異なります。

HTML

<ul>
  <li>りんご</li>
  <li>バナナ</li>
  <li>ブドウ</li>
  <li>キウイ</li>
</ul>
<p>次の要素</p>

このようにリストの後に「p」要素が入ってきた場合の動きを確認してみましょう。

「Flexbox」の場合

CSS

ul {
  display: flex;
  list-style: none;
}

ul li {
  margin-left: 0.5em;
  margin-right: 0.5em;
}
Flexboxを使用して文字を横並びにした画像

「float: left」の場合

CSS

ul {
  list-style: none;
}

ul li {
  float: left;
  margin-left: 0.5em;
  margin-right: 0.5em;
}
float: leftを使用して文字を横並びにした画像

「float: left」はリスト外の「p」要素も一緒に横に並んでしまいました。
仕様上、リスト以降の要素を横並びで表示するようになるため、このように予期しない配列となる可能性があります。

これを避けるためには「p」要素で「float」の設定をクリアする必要があります。
以下のCSSに書き換えることにより「Flexbox」と同様の表示をすることが可能です。

CSS

ul {
  list-style: none;
}

ul li {
  float: left;
  margin-left: 0.5em;
  margin-right: 0.5em;
}

p {
  clear: left; 
}
CSSを書き換えた画像

どちらの方法を使うのが良いか

リストを横並びで扱う方法が2種類あり、どちらも同じように表示をすることができます。
それでは、実際に使う時どちらを選ぶのが良いかを判断するため、それぞれのメリット、デメリットを挙げたいと思います。

1.「flexbox」

メリット

・自由度が高い
・他の要素を巻き込むことが無い

デメリット

・CSS3非対応ブラウザでは正常に動作しない(特にInternet Exproler)

2.「float:left」

メリット

・CSS3非対応ブラウザでも動作する

デメリット

・他の要素を巻き込んでしまうため「clear:left」が必須になる

それぞれメリットデメリットはありますが、「flexbox」の方が新しい技術のため、自由度は高くなっています。
また、CSS3非対応ブラウザの筆頭であるInternet Exprolerは2022年6月にサポートが切れ、主要なブラウザであるChromeやFirefox、SafariではCSS3に対応しているので、気にせず 「flexbox」を選択しても大きな問題は無いでしょう。

まとめ

CSSでリストの「li」要素を横並びにする方法を紹介しました。

  • CSSでリストを横並びにする方法は2種類ある
  • 「flexbox」はCSS3からの対応、「float:left」はCSS3以前からの対応
  • 新しい「flexbox」の方が自由度は高く、ほとんどのブラウザがCSS3に対応している

どちらの方法でも、リストを横並びにするには問題はありませんので、必要に応じて使い分けましょう。


関連記事

資料請求

  • 短期集中で最速エンジニア転職を実現-転職成功者インタビュー一覧

    DMM WEBCAMPでは転職成功率98%を実現しています。本資料では、元警察官や元ラーメン屋など様々なバックグラウンドを持つ卒業生の声をお届けします。

    資料をダウンロードする
  • IT技術がもたらす3つの変化と身につけるべきスキル

    IT技術の発展により、今後10~20年程度で47%の仕事がなくなると言われています。どのような変化が訪れ、私達はどのようなスキルを身につけるべきかを解説します。

    資料をダウンロードする
  • 未経験がフリーランスエンジニアになる方法-年収アップで自由な働き方を手に入れる

    働き方改革やリモートワークの影響でフリーランスという働き方の人気は高まりつつあります。フリーランスエンジニアとして活躍するために必要な情報をお届けします。

    資料をダウンロードする

© 2024 WEBCAMP MEDIA Powered by AFFINGER5