水平方向 中央寄せ

CASE01: text-align: center;

親のブロック要素に指定することで、中身の要素を中央揃えにします。

See the Pen Centering CSS – CASE01: text-align: center; by netamame (@netamame) on CodePen.

<section class="case-01">
  <div class="wrap">
    <p class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </p>
    <div class="img-wrap">
      <img src="https://images.unsplash.com/photo-1699969468338-42dd3f91bba6?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3MDE3MTYyNDB8&ixlib=rb-4.0.3&q=85">
    </div>
  </div>
</section>
.content{
  text-align:center;
}
.img-wrap{
  text-align:center;
}

CASE02: margin-inline: auto;

margin-inline: auto; の色々なパターンを見てみます。

①幅を指定
左右のmarginをautoにし、幅の指定をしてやることで中央に揃います。

②内容の幅に合わせる
width: max-content; とすることで、具体的な幅を決めずに内容に応じた幅にすることも可能です。

③画像wrapを使用・幅を指定
画像にwrapする親要素を使用。その親要素にmargin-inline: auto;を指定します。

④画像のみ・block要素に変換
img要素に直接指定する場合は、displayの指定に注意。

See the Pen Centering CSS – CASE02: margin-inline: auto; by netamame (@netamame) on CodePen.

<h1>CASE02:margin-inline: auto;</h1>

<section class="case-01">
  <div class="wrap">
    <!-- ①幅を指定 -->
    <p class="content content-01">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </p> 
    <!-- ②内容の幅に合わせる -->
	<p class="content content-02">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </p>
    <!-- ③画像wrapを使用・幅を指定 -->
    <div class="img-wrap">
      <img src="https://images.unsplash.com/photo-1699969468338-42dd3f91bba6?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3MDE3MTYyNDB8&ixlib=rb-4.0.3&q=85">
    </div>
    <!-- ④画像のみ・block要素に変換 -->
    <img src="https://images.unsplash.com/photo-1701220416880-2bfed18447bb?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3MDI5NjYyNjZ8&ixlib=rb-4.0.3&q=85" class="img-only">
  </div>
</section>
// ①幅を指定
.content-01{
	width: min(400px,100%);
	margin-inline: auto;
}
// ②内容の幅に合わせる
.content-02{
	width: max-content;
	margin-inline: auto;
}
// ③画像wrapを使用・幅を指定
.img-wrap{
    width: 300px;
	margin-inline: auto;
}
// ④画像のみ・block要素に変換
.img-only{
    width: 300px;
	margin-inline: auto;
    display:block;
}

CASE03-A:display: inline-block;

内容を囲うブロックを中央寄せし、内容は左寄せとしています。

See the Pen Centering CSS – CASE03-A: display: inline-block; by netamame (@netamame) on CodePen.

<section class="case-03a">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
	text-align: center;
	.content{
		display: inline-block;
		text-align: left;
	}
}

CASE03-B:display: inline-block;

内容を囲うブロックを中央寄せして並べ、内容も中央寄せとしています。

See the Pen Centering CSS – CASE03-B: display: inline-block; by netamame (@netamame) on CodePen.

<section class="case-03b">
  <div class="wrap">
    <div class="content">
      BTN-01
    </div> 
		<div class="content">
      BTN-02
    </div>
  </div>
</section>
.wrap{
	text-align: center;
	.content{
		display: inline-block;
	}
}

CASE04:Flexbox(水平方向のみ)

Flexboxを使用して左右中央寄せを行います。

See the Pen Centering CSS – CASE04:Flexbox(水平方向のみ) by netamame (@netamame) on CodePen.

<section class="case-04">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
	display: flex;
    justify-content: center;
	.content{
		width:max-content;
	}
}

垂直方向 中央寄せ

CASE05:padding

親要素の上下に同じpaddingを指定するシンプルな方法です。

See the Pen Centering CSS – CASE05: paddingを使用 by netamame (@netamame) on CodePen.

<section class="case-05">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
    padding:30px 0;
}

CASE06:display: table-cell; + vertical-align:middle;

親要素に display: table; 、中央寄せしたい子要素に display: table-cell; と vertical-align:middle; を指定します。

See the Pen Centering CSS – CASE06: by netamame (@netamame) on CodePen.

<section class="case-06">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
// Base settings
h1{
  font-size:16px;
}
.content{
  font-size:12px;
  line-height:2;
}


// main
.wrap{
  display: table;
  height:200px;
  .content{
  background: #eee;
  display: table-cell;
  vertical-align:middle
  }
}

上下左右 中央寄せ

CASE07-A:display: grid; (要素が1つの場合)

親要素に対して display: grid; をしています。要素が1つの場合は2行で完結します。

See the Pen Centering CSS – CASE07: by netamame (@netamame) on CodePen.

<section class="case-07a">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap {
  display: grid;
  place-content: center;
}

CASE07-B:display: grid; (要素が複数ある場合)

要素が複数ある場合は3行になります。

See the Pen Centering CSS – CASE07B:display: grid; (要素が複数ある場合) by netamame (@netamame) on CodePen.

<section class="case-07a">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
    <img src="https://images.unsplash.com/photo-1699969468338-42dd3f91bba6?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3MDE3MTYyNDB8&ixlib=rb-4.0.3&q=85">
  </div>
</section>
.wrap {
  display: grid;
  place-content: center;
  place-items: center;
}

CASE07-C:display: grid; + margin: auto;

CASE07A と CASE08B では 親要素からの指定のみでしたが、子要素にmarginをかけることでのコントロールも可能です。

See the Pen Centering CSS – CASE07C:display: grid; + margin: auto; by netamame (@netamame) on CodePen.

<section class="case-07c">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
    <img src="https://images.unsplash.com/photo-1699969468338-42dd3f91bba6?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3MDE3MTYyNDB8&ixlib=rb-4.0.3&q=85">
  </div>
</section>
.wrap{
  display: grid;
}
.content{
  margin: auto;
}
img{
  margin: auto;
}

CASE08:Flexbox(上下中央)

CASE04を発展させて垂直方向の中央寄せも加えています。

See the Pen Centering CSS – CASE08: by netamame (@netamame) on CodePen.

<section class="case-08">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
	display: flex;
  justify-content: center;
	align-items: center;
	.content{
		width:300px;
	}
}

CASE09:position + inset + margin

よく使用される方法ですが、少しクセがあります。

【必要条件】
 ① 子要素の inset・width・heightauto以外 であること
 ② 子要素の marginauto であること
この2つの条件が揃うことで中央寄せになります。

※詳しくはこちら
https://hyper-text.org/archives/2014/08/position_absolute_center_layout/

See the Pen Centering CSS – CASE09: by netamame (@netamame) on CodePen.

<section class="case-09">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
  position: relative;
	.content{
	  position: absolute;
      inset: 0;
      margin: auto;
      width: max-content;
      height: 6rem;
	}
}

CASE10:position + transform

transformを使って要素のサイズの半分を戻すことを行っています。

See the Pen Centering CSS – CASE10: by netamame (@netamame) on CodePen.

<section class="case-10">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
  position: relative;
	.content{
	  position: absolute;
	  top: 50%;
	  left: 50%;
      translate: -50% -50%;
	}
}

CASE11:position + inset + translate

translateを使うことで、親要素よりも子要素が大きい場合でも中央寄せ になります。

See the Pen Centering CSS – CASE11: by netamame (@netamame) on CodePen.

<section class="case-11">
  <div class="wrap">
    <div class="content">
      私はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。<br>
      これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。<br>
      私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執っても心持は同じ事である。<br>
      よそよそしい頭文字などはとても使う気にならない。私が先生と知り合いになったのは鎌倉である。
    </div> 
  </div>
</section>
.wrap{
    position: relative;
    .content{
        position: absolute;
        inset: 50% auto auto 50%;
        translate: -50% -50%;
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です