はじめに
皆様、はじめまして。株式会社ゼネットの方です。
新人研修の中で、HTMLレイアウトの横並びに苦戦しましたが、
その解決方法について簡単にご紹介いたします。
この記事が皆様のお役に立てれば幸いです。
環境:Eclipse 2018 Windows 64bit
解決方法
(結論)私も以前、floatやinline-blockなどさまざまな方法を試しましたが、最終的にはflexboxを使うことで問題を解決しました。
flexboxを使うことで、親要素と子要素の関係を理解しやすく、コードもシンプルになります。また、flexはfloatに比べて自由に、簡単に横並びのCSSプロパティであり、親要素と子要素が干渉しないので、初心者にも優しいです。
【使用例】
<div class="container">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
</div>
中央寄せ
justify-content: center;
を使用します。
.container {
display: flex;
justify-content: center;
}
.item1 {
flex: 1;
background-color: yellow;
width: 200px;
height: 100px;
}
.item2 {
flex: 1;
background-color: red;
width: 200px;
height: 100px;
}
(図)中央寄せ
左寄せ
justify-content: start;
を使用します。
.container {
display: flex;
justify-content: start;
}
(図)左寄せ
右寄せ
justify-content: end;
を使用します。
.container {
display: flex;
justify-content: end;
}
(図)右寄せ
(解説)このようにすることで、親要素.container
内の子要素.item
が均等に横並びに配置されます。floatやinline-blockよりも直感的で、親子要素の関係が明確になります。
ワンポイント
さらに、align-itemsやjustify-contentなど、flexbox以外にも便利なCSSプロパティがありますので、幅広く知識を深めていきましょう。
活用編
他のプロパティをを使ってみましょう!
order
プロパティは、要素の表示順序を制御するためのプロパティです。このプロパティを使うことで、HTML上の要素の順序と実際の表示順序を独立して制御することができます。htmlコード例
<div class="grid">
<div class="grid-item">Item 1</div>
<div class="grid-item2">Item 2</div>
<div class="grid-item">Item 3</div>
<div class="grid-item">Item 4</div>
<div class="grid-item">Item 5</div>
<div class="grid-item">Item 6</div>
<div class="grid-item">Item 7</div>
<div class="grid-item">Item 8</div>
</div>
CSSコード例
.grid {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-content: center
}
.grid-item {
background-color: yellow;
width: 200px;
margin: 10px;
}
.grid-item2 {
background-color: red;
width: 200px;
margin: 10px;
order: -1;
}
(図)ボックス内のアイテム折り返し、表示順序を変更、周囲に空白が配置されます。
おわりに
float、inline-block、gridなどCSSで横並びレイアウトをできる方法の中で、
私的に最も理解しやすいのはやはりflexboxかと思います。
HTMLとCSSのレイアウトを理解することは、Web開発において重要なスキルです。
flexboxをマスターすれば、簡単に横並びレイアウトを実現できます。
今後のWeb開発に役立つ知識を身につけるために、ぜひflexboxを使ってみてください。