どっちでもいいけど気になるレイアウトを簡単に
見出しや短文を中央に配置したいけれど、折り返した際の文字揃えが気になる…そんなCSS調整の悩みを解決します。ブログ、LP、レスポンシブデザインでも活用できる実装テクニックです。
CSS(カスケードスタイルシート)では、テキストを中央寄せや左寄せなど、自在にレイアウトできますが、
短い文字列は中央寄せ、折り返したら左寄せに切り替える
というようなレイアウト表示は、意外とひと工夫が必要です。今回はその実装方法を、サンプルコードとともに解説します。
まずはサンプルコードをご覧ください。流し見でオッケーです。
<!DOCTYPE html>
<html lang="ja">
<head>
<link rel="stylesheet" href="sample.css">
</head>
<body>
<div class="box">
<p>名言</p>
</div>
<span> </span>
<div class="box">
<p>ゲーテは言った…。人間の最大の罪は不機嫌であると</p>
</div>
サンプルのCSSです。
body{background:oldlace}
.box{width:320px;
margin:0;padding:10%;
border:solid 10px #546EB4;
background:#66CC33}
p{margin:2%;padding:1%;line-height:2;background:#fff}
| 親要素 | box | 黄緑 |
| 子要素 | p | 白 |
特に設定していないので、左に寄った状態で表示されます。次に枠線に囲まれたboxを中央に寄せます。
box{margin:0 auto}
親要素であるbox(ブロック要素)は、マージンの横の値をautoにすることで中央に配置されます。
boxが中央に配置されました。文字列も中央に配置されたかのように見えますが、「名言」は左寄せで表示されているので文字列も中央揃えにしたいと思います。
box{text-align:center}
text-alignの値をセンターに指定することで子要素pは中央に配置されます。
これで真ん中にこだわるレイアウトが出来ました。折り返した文字列も中央に表示されています。
これはこれでいいのですが、文字の区切りによっては中央にあるとなんとなく違和感がある場合もあります。そんな時、折り返し分を左から表示したくなるのも人の道。(ひとそれぞれですが…)
p{text-align:left}
ひとまず子要素に左揃えにするためプロパティtext-align:leftを設定してみます。すると、親要素の設定(中央配置)が無効になり、ふつうに左寄せになってしまいます。
そこで子要素に「いいとこどりのアレ」を追記します。
DISPLAYはインラインでブロックです。早速追記してみます。
p{display:inline-block}
p{
display:inline-block;
margin:2%;padding:1%;
text-align:left;
line-height:2;background:#fff
}
なんということでしょう!
短い文字列は中央に、折返しは左揃えで表示する
がちゃんと実現できました。
この「中央揃えした文字列を折返したら左揃えする」という設定は、主にヘッダーエリアで重宝するのかなと思います。レイアウトが決まると気持ちがいいものです。
不機嫌、人間の悪い感情は見たくもない、感じたくもない。ゲーテの言葉が身に沁みながら、大ちくわで生きられないソクラテツがお伝えしました。( ´ ▽ ` )ノ