【CSS】スタイルシートだけで縦方向と横方向でセンタリングする方法

horizontal-vertical-centering-css

WEBデザインで画像やレイアウトした要素を中央に揃えるレイアウトを作ることがよくあります。実際にHTMLにコーディングをするときに、横位置をセンターにする場合や、縦位置をセンターにする場合などCSSだけで実現する方法をまとめてみました。

{ margin: 0 auto; } を使用した方法

CSSを使い「margin: 0 auto;」という記述でボックス要素を横方向に中央寄せすることが一般的な手法になっています。

horizontal-vertical-centering-css-01

「margin: 0 auto;」で横方向のセンタリングが可能なら、「margin: auto 0;」で縦方向のセンタリングができそうですが縦方向はセンタリングになりません。

horizontal-vertical-centering-css-02

CSSで縦方向に中央寄せする方法をご紹介します。

{ display: table-cell; } を使用した方法

親要素の「table-cell」化で「vertical-align」を有効にすることで縦方向の位置を調整することができます。

horizontal-vertical-centering-css-03

CSS

親要素の「div」に{ display: table-cell; }を指定すると、{ vertical-align: middle; }によって縦方向のセンタリングが可能になります。また横方法も{ text-align: center; }によって指定することができます。

ただし子要素はインライン要素である必要があるため{ display: inline-block; }を指定してインライン要素にしています。

{ text-align: center; }は子要素にも反映されるので子要素内で調整が必要になります。

div.container {
	display: table-cell;
	vertical-align: middle;
	text-align: center;
	width: 320px; height: 240px;
	background-color: #666;
}

div.container-in {
	display: inline-block;
	width: 160px; height: 120px;
	background-color: #333;
	text-align: left;
}

{ position: absolute; } を使用した方法-その1-

子要素を{ position: absolute; }として親要素からの縦横の位置を任意で設定することで、縦横のセンタリングが可能になります。

horizontal-vertical-centering-css-04

CSS

ポイントは子要素において全方向「top: 0; left: 0; bottom: 0; right: 0;」の位置指定を行うことです。それぞれの値が「0」でなくても同一値であればセンタリングになります。横方向にのみセンタリングを行う場合は「left: 0; right: 0;」、縦方向にのみセンタリングを行う場合は「top: 0; bottom: 0;」をすることで位置を指定することができます。

.container {
	position: relative;
	width: 320px; height: 240px;
	background-color: #666;
}

.container-in {
	width: 160px; height: 120px;
	overflow: auto;
	margin: auto;
	position: absolute;
	top: 0; left: 0; bottom: 0; right: 0;
	background-color: #333;
}

{ position: absolute; } を使用した方法-その2-

「top」、「left」と「margin-top」、「margin-left」を組み合わせセンタリングを行います。「margin」をマイナス指定でずらすことで調整をしています。

horizontal-vertical-centering-css-04

CSS

.container {
	position: relative;
	width: 320px; height: 240px;
	background-color: #666;
}

.container-in {
	width: 160px; height: 120px;
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -60px;   /* 要素の高さ ÷ 2 */
	margin-left: -80px;  /* 要素の横幅 ÷ 2 */
	background-color: #333;
}

関連記事

【フォト】蓮華寺池公園フォトギャラリー≪冬≫

藤枝市のほぼ中央に位置し、「花・水・鳥・笑顔」がテーマの公園「蓮華寺池公園」。池を囲む公園は、桜や藤の花、蓮の花など季節を通して自然を楽しむことができる憩いの場所です。今回、紹介する冬の蓮華寺池公園の山頂周辺の写真です。自然のなかを歩いたり、眺めの良い見晴台があったり、広場やアス...続きを読む

2018.02.07フォトギャラリー藤枝

焼津おんぱく2018 「No30.焼津のスポットを歩き巡る インスタ映えする写真の撮り方講座」

カメラマンとして、焼津おんぱく2018 「No30.焼津のスポットを歩き巡る インスタ映えする写真の撮り方講座」のプログラムの案内人をしました。 風が強く、雲が少し多い日でしたが、天気にも恵まれ、タイミングにもめぐまれ、参加者さんみんなに楽しんでいただき、焼津の魅力を再発見...続きを読む

2018.02.14フォトギャラリー焼津

【JavaScript】グラフなどの描画をサポートするライブラリまとめ

折線グラフ、棒グラフ、円グラフやレーダーチャートなどを画像を使わずに描画をするJavaScriptライブラリをまとめてみました。 Chart 6種類のグラフを作成できるJavaScriptライブラリです。描画にはHTML5のcanvasを使用しています。 Dem...続きを読む

2015.03.02HTMLコーディング

【フォト】吉田町川尻海岸『幸福呼ぶ鳥居~初日の出~』

静岡県吉田町にある川尻海岸では年始の期間限定で『幸福呼ぶ鳥居』がお目見えします。鳥居に朝日が昇る様子は幻想的です。初日の出の日は、多くの方々でにぎわっていました。 フォトギャラリー ※写真をクリックすると拡大表示します。 [gallery link="file" col...続きを読む

2017.01.01フォトギャラリー

【フォト】冒険と遊びの喫茶店 らみぃ

藤枝駅の近くにある冒険と遊びの喫茶店「らみぃ」に行ってきました。ボードゲームが遊べるプレイスペースで、並んでいるボードゲームをみるとワクワクします。 アナログゲームをじっくりと遊ぶことができるお店、はじめていきましたが、楽しい時間を過ごせてとても充実した時間を過ごせました!...続きを読む

2018.02.22フォトギャラリー藤枝