画像とテキストを横に並べてなおかつ画像に対して縦方向の真ん中にテキストを置きたい時はよくあります。
例えばサイトのヘッダーでロゴ画像とサイトタイトルを並べたい時など。。。
ウェブページやブログのデザインで、要素の中央揃えは一般的な方法の一つです。
しかし、ただ画像とテキストを並べて配置しただけではバランス良く並ばないことも多いためCSSで調整する必要があります。
本記事では、CSSを利用したテキストや画像、div要素などの要素を並べて表示する方法の実例と留意すべきポイントについて紹介します。
画像と1行テキストの横並び、テキストは縦中央揃えにするCSS
display:flexを使う方法
See the Pen 画像とテキストの横並び flexbox by mixtaro (@mixtaro) on CodePen.
上記のサンプルではロゴ画像img
とテキストh1
をラップしている.logo
にdisplay:flex
を適用しています。
.logo {
display:flex;
align-items: center;
}
横並びも縦方向の中央揃えもflexboxなら簡単にできますね。
display:inline-blockを使う方法
See the Pen 画像とテキスト横並びinline-block by mixtaro (@mixtaro) on CodePen.
こちらではa
タグでimg
とh1
タグをラップしています。
<a href="#">
<img src="https://tokushiyo.net/wp-content/uploads/logo-bee_1.png" alt="LOGO">
<h1>Bee Beauty</h1>
</a>
a {
display: block;
text-decoration: none;
}
img, h1 {
display: inline-block;
vertical-align: middle;
}
まずimg
とh1
をラップしているa
タグをdisplay:block
にします。
display:inline-block
では縦方向の中央揃えvertical-align:middle
が利用できます。
そしてimg
とh1
にdisplay:inline-block
とvertical-align:middle
を適用します。
display: inline-block;
により、img
とh1
の二つの要素はインラインブロック要素として扱われます。
インラインブロック要素は、インライン要素のように並びますが、ブロック要素のように高さと幅を持つことができます。
画像とテキスト複数行の横並び、テキストは縦中央揃えのCSS
テキストが複数行だった場合の縦方向中央揃え。
htmlをちょっと修正しました。html5ではaタグの中にdivを含めることは可能になったのでロゴ画像img
とサイト名を囲んだdiv.site-title
を丸ごとa
タグで囲むことにしました。
Flexboxで画像とテキスト複数行の横並び
<a href="#">
<img src="/img/logo-bee_1.png" alt="LOGO">
<div class="site-title">
<h1>Bee Beauty</h1>
<p>NAIL SALON</p>
</div>
</a>
先程とほぼ同じですがh1
とp
をdiv
で囲むことで、a
に設定したdisplay:flex
で子要素のimg
とdiv.site-title
が横並びが適用されます。
See the Pen 画像+テキスト複数行 横並びdisplay:flex by mixtaro (@mixtaro) on CodePen.
display:inline-bolockを使う方法
See the Pen 画像+テキスト複数行 横並び display:inline-bolock by mixtaro (@mixtaro) on CodePen.
vertical-alignを有効にするために.site-title
をdisplay:inline-block
でインラインにし、vertical-align:middle
を指定します。
テキストの余白を調整するためp
タグをline-height:1
にして行の高さをフォントサイズと同じにします。
display:tableを使う方法
See the Pen 画像+テキスト複数行 横並び display:table by mixtaro (@mixtaro) on CodePen.
a
要素をテーブルとして表示し、a>img
要素にvertical-align: middle
を適用して画像を垂直方向に中央揃えしています。
そして、div.site-title
をテーブルセルにし、vertical-align: middle
を使用して要素の垂直方向の中央揃えにします。
img要素はインラインレベル要素なので初期状態でvertical-align
が有効です。
以上、画像とテキストを横並びにして縦方向中央に揃える方法でした。
画像とテキストの横並びにするというのはデザイン上よくあることですがflexboxが登場してより簡単に実現できるようになりました。