どっちでもいいけど気になるレイアウトを簡単に
カスケードスタイリングシートの最大の魅力は、デザインです。中央寄せしたり左に揃えたり…。
短い文字列は中央寄せ(以下センタリング)し、折返したら左揃え(左寄せ)で表示する、これが意外にコツがいるんですが、ちょっとした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
}
なんということでしょう!
短い文字列は中央に、折返しは左揃えで表示する
がちゃんと実現できました。
この「中央揃えした文字列を折返したら左揃えする」という設定は、主にヘッダーエリアで重宝するのかなと思います。レイアウトが決まると気持ちがいいものです。
不機嫌、人間の悪い感情は見たくもない、感じたくもない。ゲーテの言葉が身に沁みながら、大ちくわで生きられないソクラテツがお伝えしました。( ´ ▽ ` )ノ
【関連記事】バナー画像の上に文字列を中央配置する方法