CSS 要素を横並びにする方法&パターン3選
一覧ページによく使われる、div
やli
などのボックス要素を横一列に並べる方法と横並びパターンを3つ紹介します。
flexboxで横一列に並べる
サンプル
See the Pen
css layout horizontal – flexbox by Aquarium (@aquarium)
on CodePen.
HTML
<div class="item-list">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
CSS
.item-list{
display: flex;
justify-content: center; /* 中央寄せ */
}
.item-list .item{
box-sizing: border-box;
padding: 40px 80px;
}
特徴
- 親要素に指定。子要素全てに適用
用途
- 主に
div
に使用 ul, li
にも使用可。その場合はul
に指定- 横幅いっぱいに要素を横並びにしたい時におすすめ
display: inline-blockでボタンを並べる
サンプル
See the Pen
css layout horizontal – flexbox by Aquarium (@aquarium)
on CodePen.
HTML
<div class="buttons">
<a class="button" href="#">ボタン1</a>
<a class="button" href="#">ボタン2</a>
<a class="button" href="#">ボタン3</a>
</div>
CSS
.button{
display: inline-block;
margin: 0 10px;
}
特徴
- 要素に適用
用途
- ボタンを並べる時に使用
- 文章の横にボタンを並べる時に使用
画像+テキストあり横並び
See the Pen
css layout horizontal – flexbox 02 by kura (@kuranopen)
on CodePen.
画像とテキストが入った要素を横並びに表示。
HTML
<div class="item-list">
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキストテキストテキスト</p>
</div>
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキスト</p>
</div>
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキスト</p>
</div>
</div>
CSS
.item-list {
display: flex;
justify-content: space-between;
}
.item-list .item {
width: 31%;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.item-list .item .image {
margin: 0;
padding: 0;
}
.item-list .item .image img {
width: 100%;
}
.item-list .item .title {
margin: 10px 0 0;
padding: 0;
font-weight: bold;
font-size: 20px;
}
.item-list .item .description {
margin: 5px 0 0;
padding: 0;
font-size: 16px;
}
画像+テキスト+背景あり横並び
See the Pen
css layout horizontal – flexbox 02 by kura (@kuranopen)
on CodePen.
背景のある画像とテキストが入った要素を横並びに表示。
HTML
<div class="item-list">
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキストテキストテキスト</p>
</div>
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキスト</p>
</div>
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキスト</p>
</div>
</div>
CSS
.item-list {
display: flex;
justify-content: space-between;
}
.item-list .item {
width: 31%;
margin: 0;
padding: 0 0 20px 0;
box-sizing: border-box;
background: #eee;
}
.item-list .item .image {
margin: 0;
padding: 0;
}
.item-list .item .image img {
width: 100%;
}
.item-list .item .title {
margin: 10px 0 0;
padding: 0 20px;
font-weight: bold;
font-size: 20px;
}
.item-list .item .description {
margin: 5px 0 0;
padding: 0 20px;
font-size: 16px;
}
画像+テキスト+ボタンあり横並び
See the Pen
css layout horizontal – flexbox 02 by kura (@kuranopen)
on CodePen.
背景のある画像とテキストとボタンが入った要素を横並びに表示。
HTML
<div class="item-list">
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p>
<p class="link"><a href="#">くわしくみる</a></p>
</div>
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキスト</p>
<p class="link"><a href="#">くわしくみる</a></p>
</div>
<div class="item">
<figure class="image"><img src="https://picsum.photos/id/237/960/540" alt=""></figure>
<p class="title">タイトル</p>
<p class="description">テキストテキストテキストテキストテキストテキスト</p>
<p class="link"><a href="#">くわしくみる</a></p>
</div>
</div>
CSS
.item-list {
display: flex;
justify-content: space-between;
}
.item-list .item {
display: flex;
flex-direction: column;
width: 31%;
margin: 0;
padding: 0 0 20px 0;
box-sizing: border-box;
background: #eee;
}
.item-list .item .image {
margin: 0;
padding: 0;
flex: 0 0 auto;
}
.item-list .item .image img {
width: 100%;
}
.item-list .item .title {
margin: 10px 0 0;
padding: 0 20px;
font-weight: bold;
font-size: 20px;
}
.item-list .item .description {
margin: 5px 0 20px;
padding: 0 20px;
font-size: 16px;
flex: 1;
}
.item-list .item .link {
margin: 20px 0 0;
padding: 0 20px;
font-size: 16px;
text-align: center;
}
.item-list .item .link a{
display: inline-block;
padding: 10px 20px;
text-align: center;
background: blue;
color: #FFF;
font-weight: bold;
text-decoration: none;
box-sizing: border-box;
border-radius: 4px;
}