要素を上下左右中央(縦横中央)のCSSって、結局どれ?!
横幅や縦幅を指定すれば上下中央配置できるけど、上下左右の縦幅や横幅が可変の時
と思ったことありませんか? この記事では上下左右中央寄せ(縦横中央)にする方法ご紹介します。
※この記事はpositionを使った方法となります。
横幅や縦幅を指定すれば上下中央配置できるけど、上下左右の縦幅や横幅が可変の時
と思ったことありませんか? この記事では上下左右中央寄せ(縦横中央)にする方法ご紹介します。
※この記事はpositionを使った方法となります。
この記事は「2021年01月22日」に書かれた記事です
※position 以外の上下(縦中央)、左右(横中央)のCSSは「4-18 上下中央、左右中央にするためのCSS」をご覧ください。
例1
HTML
<div class="box1"> <div class="box2">この文章を縦中央に</div> </div>
CSS
.box1 { position: relative; width:300px; height: 100px; background-color: #FFF; } .box2 { position: absolute; top:0; left:50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); }
transform: translateX(-50%)の設定が入ってない場合、どのように表示されるか見てみましょう
例2
left:50%が設定されているため、ピンクの領域は白い背景の領域のちょうど半分のところから始まっています。50%の位置に配置したいときには、これでよいのですが、「この文章を横中央に」したい場合はアウトです。
例1で見たように、ピンクの領域に「transform: translateX(-50%);」を設定し、ピンクの領域の半分(50%)を左にずらしておきます。
例1
HTML
<div class="box1"> <div class="box2">この文章を縦中央に</div> </div>
CSS
.box1 { position: relative; width: 300px; height: 100px; background-color: #FFF; } .box2 { position: absolute; top: 50%; left: 0; -webkit-transform: translateY(-50%); transform: translateY(-50%); }
で見てきたように
念のため、transform: translateY(-50%)を設定していない表示も見ておきましょう。
やはりピンクの領域がやや下にずれてしまいます。
ここまでくれば、あとは簡単です。1で見てきた左右中央(横中央)と、2の上下中央(縦中央)を合体させるだけです。
HTML
<div class="box1"> <div class="box2">この文章を上下左右中央(縦横中央)に</div> </div>
CSS
.box1 {
position: relative;
height: 100px;
background-color: #FFF;
}
.box2 {
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
上下左右(縦横)ともにピンクの領域が白い領域の中央に配置されました。
.box2 に transform: translate(-50%, -50%); を設定して、ピンクの領域を上に50、左に50戻しています。
1つだけご紹介しておきます。
HTML
<div class=”box1″>
<div class=”box2″>この文章を縦中央に</div>
</div>
CSS
.box1 { display:table; width: 100%; height:100px; } .box2 { display:table-cell; text-align:center; vertical-align:middle; }
他にもあるので、機会があればまたご紹介します。
HOME > ホームページ制作 > CSSでホームページを1UP > 要素を上下左右中央(縦横中央)のCSSって、結局どれ?!