
要素をブロックの縦横中央に配置するというシーンはたくさんあります。
横の中央揃えは簡単です。「margin:0 auto」か「text-align:center」で指定できます。ですが、縦中央揃えは「margin:auto 0」というわけにはいかないのが残念というか難点です。
そこで今回は「画像やテキストを縦横中央に配置する方法4つ」を確認していきます。
HTML
ベースとなる共通HTMLです。
<div class="box">
<div class="inner">
<div class="content">
<h2 class="title">title</h2>
<p class="text">
content here
</p>
</div><!--content-->
</div><!--inner-->
</div><!--box-->
「box」の中にある「inner」もしくは「content」をCSSで縦横中央に配置していきます。
vertical-align: middle
CSS
.box{
background: #ed4343;
display: table;
height: 400px;
text-align: center;
width: 100%;
}
.inner{
display: table-cell;
vertical-align: middle;
}
.content{
border: 1px solid #fff;
display: inline-block;
padding: 20px;
}
10行目 「vertical-align: middle;」が適用されるには「インライン要素」か「display:table-cell;」のどちらかである必要があります。
2行目 さらに「display:table-cell;」の場合は、親要素に「display: table;」が指定されている必要があります。
position:absolute + transform
CSS
.box{
background: #ffb21d;
height: 400px;
position: relative;
text-align: center;
}
.inner{
left: 50%;
position: absolute;
top: 50%;
}
.content{
border: 1px solid #fff;
padding: 20px;
transform: translate(-50%,-50%);
}
7,8,9行目 「inner」に「position: absolute;」を指定して、親要素の上からと左からそれぞれ50%(半分)の位置に移動します。

15行目 「inner」の中の「content」を「transform: translate(-50%,-50%);」を指定して要素の幅と高さの50%(半分)マイナス方向に移動(変形)させています。

display:flex
CSS
.box{
background: #42c97e;
height: 400px;
position: relative;
text-align: center;
align-items: center;
display: flex;
justify-content: center;
}
4つの方法の中で一番シンプルで簡単な方法です。縦横中央にしたい要素の親要素に「display: flex;」と「align-items: center;」を指定するだけでできてしまいます。子要素に幅も高さも指定する必要もありません。
「display: flex;」は比較的新しいプロパティーなので、各ブラウザの対応状況は確認した上で使用するのがベストです。
Can I use… Support tables for HTML5, CSS3, etc
flexboxの詳しい記事を書きました。

top,bottom,left,right,width,heightがauto以外 + margin:auto
.box{
background: #489be1;
height: 400px;
position: relative;
text-align: center;
}
.content{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 50%;
height: 140px;
margin: auto;
border: 1px solid #fff;
padding: 20px;
}
この方法が適用されるには下記の条件があります。
- position: absoluteが指定されている
- top,bottom,left,right全てauto以外が指定されている
- width,heightもauto以外が指定されている
- marginにautoが指定されている
2の条件は、「top,bottom」と「left,right」の相対する方向が同じ数値であれば「0」でなくても中央揃えになります。
この方法は正直なところ知りませんでした。詳しく確認したい方は下記の参考サイトに詳細が記載されています。
参考
以前「コピペでOK!画像や動画を全画面にフィットさせて中央に表示する」と「ボックスの高さをブラウザの高さに合わせるテク3つ!」という記事を書きましたが、その中のサンプルサイトでは「position:absolute + transform」で縦横中央に配置しています。


WEBデザイナー・フロントエンドのスキルを確実に身につけたい方へ
「WEBデザインやフロントエンドを学びたい」と思い立ったとき、多くの方がまず独学を選びます。
しかし、独学では「何をどこから学べばいいかわからない」「つまずいたときに誰にも聞けない」といった壁にぶつかることも少なくありません。
一方、スクールで学べば、正しい順序で、現場で使えるスキルを効率よく習得することができます。最短ルートでスキルを身につけたい方には、スクール学習がおすすめです。
かすが私は26歳で印刷業からWEBデザイナーを目指して学び始めましたが、やはり独学に限界を感じ短期スクールで学びました。本気でスキルを身につけたいならスクールはマジで行った方が良いです!
- カリキュラムが体系化されているため、基礎から応用まで無駄なく学べる
- 現役のプロから実践的なフィードバックを受けられる
- わからないことをすぐに質問・解決できる環境がある
- 制作課題を通じて、ポートフォリオが作成できる
- 学習仲間や講師とのつながりが、モチベーション維持につながる
- カリキュラムが現場で必要とされる技術に対応しているか
- 現役デザイナー・エンジニアが講師として在籍しているか
- ポートフォリオ制作のサポートが充実しているか
- 卒業後の就職・転職支援が用意されているか
- オンライン・通学など、自分の生活スタイルに合った受講形式か
遠回りせず、確実にスキルを身につけたいなら、プロに教わるのが一番の近道です。
WEBデザイナー・フロントエンドエンジニアとして一歩踏み出したいあなたにぴったりのスクールを、下記の記事でご紹介しています。ぜひチェックしてみてください。










