親要素のサイズに関わらず中央に配置!position: absolute要素の配置方法

2024-04-02

position: absolute要素を中央に配置する方法

top: 50%; left: 50%; と transform: translate(-50%, -50%) を使う

この方法は、親要素の基準点から子要素を相対的に配置します。

HTML

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>

CSS

.parent {
  position: relative;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

この方法の利点は、親要素の高さが分からなくても中央に配置できることです。

注意点

  • 子要素の幅と高さが固定されている必要があります。
  • 親要素に position: relative を設定する必要があります。

margin: 0 auto; を使う

この方法は、左右の余白を自動的に調整して中央に配置します。

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>
.parent {
  position: relative;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  margin: 0 auto;
}

この方法は、子要素の幅が固定されている場合に有効です。

  • 子要素の高さが分からない場合は、中央に配置できません。

Flexboxは、要素を柔軟に配置するためのレイアウトシステムです。

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>
.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
  • Flexboxは古いブラウザではサポートされていない場合があります。

CSS Gridは、2次元レイアウトを作成するためのレイアウトシステムです。

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>
.parent {
  display: grid;
  place-items: center;
}

position: absolute要素を中央に配置するには、いくつかの方法があります。それぞれ異なる方法で中央揃えを実現します。

どの方法を使うかは、プロジェクトの要件やブラウザのサポート状況によって異なります。




<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>
/* 方法1 */
.parent {
  position: relative;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100px;
  height: 100px;
}

/* 方法2 */
.parent2 {
  position: relative;
}

.child2 {
  position: absolute;
  top: 50%;
  left: 50%;
  margin: 0 auto;
  width: 100px;
}

/* 方法3 */
.parent3 {
  display: flex;
  justify-content: center;
  align-items: center;
}

.child3 {
  width: 100px;
  height: 100px;
}

/* 方法4 */
.parent4 {
  display: grid;
  place-items: center;
}

.child4 {
  width: 100px;
  height: 100px;
}

実行結果

各方法の詳細

方法1

top: 50%; left: 50%;transform: translate(-50%, -50%) を使って、子要素を親要素の基準点から相対的に中央に配置します。

方法2

margin: 0 auto; を使って、子要素の左右の余白を自動的に調整して中央に配置します。

方法3

Flexboxを使って、子要素を親要素の中央に配置します。

方法4




calc()を使うと、親要素のサイズに基づいて子要素の位置を計算することができます。

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>
.parent {
  position: relative;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100px;
  height: 100px;
}

/* 親要素の高さが分かっている場合 */
.child {
  top: calc(50% - 50px);
}

/* 親要素の幅と高さが分かっている場合 */
.child {
  top: calc(50% - 50px);
  left: calc(50% - 50px);
}

JavaScriptを使って、子要素の位置を動的に調整することができます。

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>

JavaScript

const parent = document.querySelector('.parent');
const child = document.querySelector('.child');

const centerChild = () => {
  const parentWidth = parent.offsetWidth;
  const parentHeight = parent.offsetHeight;
  const childWidth = child.offsetWidth;
  const childHeight = child.offsetHeight;

  child.style.top = `${(parentHeight - childHeight) / 2}px`;
  child.style.left = `${(parentWidth - childWidth) / 2}px`;
};

window.addEventListener('resize', centerChild);
centerChild();

CSSライブラリを使う

<div class="parent">
  <div class="child">中央に配置したい要素</div>
</div>
.parent {
  position: relative;
}

.child {
  position: absolute;
  .center();
}

position: absolute要素を中央に配置するには、さまざまな方法があります。どの方法を使うかは、プロジェクトの要件やブラウザのサポート状況によって異なります。


html css css-position


HTML/XHTMLでテキストを効果的に強調する方法

<b> と <strong> はどちらもテキストを太字にするために使用されますが、意味合いが異なります。<b> は、視覚的に太字にするだけの場合に使用します。<strong> は、視覚的に太字にするだけでなく、そのテキストが重要であることを意味する場合に使用します。...


HTML5とJavaScriptでファイルを生成・保存する方法

このチュートリアルでは、HTML5とJavaScriptを使って、クライアント側でファイルを生成して保存する方法を解説します。主に以下の2つの方法を紹介します。Blob APIを使うData URIを使うそれぞれの方法について、詳細な説明とコード例、そしてそれぞれの長所と短所を解説します。...


positionプロパティを使ってdivを重ねる

この方法は、親要素を基準にして子要素の位置を調整する方法です。手順親要素に position: relative を指定します。子要素の top、right、bottom、left プロパティを使って、親要素に対する位置を調整します。例この例では、#child は #parent の左上から10pxの位置に重ねられます。...


【CSSデザインをレベルアップ】要素のクラス条件を自在に操る!2つのクラス同時存在判定テクニック

このような条件付きのスタイル設定は、CSSの擬似クラスと呼ばれる機能を使用して実現できます。擬似クラスは、要素の状態や属性に基づいてスタイルを適用する特殊なセレクタです。この例では、以下の擬似クラスを使用します。:hover:要素の上にマウスポインタが置かれたときに適用されます。...


JavaScript、HTML、CSSで解説:固定ヘッダー時のアンカーリンク調整

Webページに固定ヘッダーを実装すると、ページスクロール時にヘッダーが画面上部に固定され、コンテンツが下にずれます。しかし、ヘッダーの高さ分だけコンテンツがずれるため、アンカーリンクをクリックした際に意図した位置に移動できない問題が発生します。...


SQL SQL SQL SQL Amazon で見る



CSSで絶対配置された要素をdivの中央に配置する方法

これは最も簡単な方法です。子要素に position: absolute; と margin: auto; を設定します。この方法は、左右方向に中央揃えしたい場合に有効です。flexbox を使用すると、要素をより柔軟に配置することができます。親要素に display: flex; と justify-content: center; align-items: center; を設定します。