CSSによる絶対中央寄せ

CSSによる絶対中央寄せ

HTML の <body>X Media</body> のみを使用し、ソースコードを一切変更せずに、テキストを画面中央(水平・垂直)に表示させる7つのCSS/JS方法を紹介。Flexbox や Grid などのモダン技術から、古いブラウザ向けの手法までを網羅。

方法①:Flexbox を使用(最も実用的)

body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  margin: 0;
}

解説:Flexbox は現代的で対応ブラウザも広く、最も簡単かつ確実な中央揃え方法です。


方法②:Grid を使用

body {
  display: grid;
  place-items: center;
  height: 100vh;
  margin: 0;
}

解説:CSS Grid を使うと、1行で中央揃えが可能。Flexbox と同様にモダンで便利。


方法③:絶対配置と transform を併用

 body {
     margin: 0;
     height: 100vh;
     position: relative;
}
.centered {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

解説:transform を使えば、どんな要素でも正確に中央に配置できます。


方法④:table-cell と vertical-align を使用

body {
    display: table;
    width: 100vw;
    height: 100vh;
    margin: 0;
    text-align: center;
 }
 .centered-wrapper {
    display: table-cell;
    vertical-align: middle;
 }
 .centered-content {
    display: inline-block;
 }

解説:古い方法ですが、旧ブラウザとの互換性が高いです。


方法⑤:line-height を使った方法(1行テキスト専用)

body {
  height: 100vh;
  margin: 0;
  line-height: 100vh;
  text-align: center;
}

解説:1行のテキストのみなら、シンプルで CSS も軽量。


方法⑥:position + top/left + transform(直接 body に適用)

body {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
margin: 0;
}

解説:transform を使えば、レスポンシブな中央揃えが可能。


方法⑦:JavaScript を使って位置を調整

<style>
body {
  position: absolute;
  margin: 0;
}
</style>
<script>
window.onload = function() {
  document.body.style.top = '50%';
  document.body.style.left = '50%';
  document.body.style.transform = 'translate(-50%, -50%)';
};
</script>

解説:CSS だけでは制御が難しい場合、JS を使って実行時に中央揃えを実現。


注意点・補足

  • body タグに直接 CSS を適用する 必要がある。
  • HTML を変更できない前提なので、擬似要素や JS 以外での要素追加は禁止。
  • 1行テキスト限定の方法(line-height)は多行では崩れるので注意。
  • transform を使う方法は、translate の基準が中央になる点を理解すること。
  • 高さ指定には 100vh を使うことで、画面サイズに応じた調整ができる。

Web制作現場でよくある質問(FAQ)

Q1:HTML を編集して <div> を追加してもいいですか?

A:今回の条件では「HTML ソースを変更できない」ため不可です。

Q2:一番推奨される方法は?

A:display: flex を使う方法が最も簡単で汎用性が高く推奨されます。

Q3:全てのブラウザに対応していますか?

A:Flexbox や Grid はモダンブラウザに対応。古い IE を対象にする場合は table-cell などを検討してください。


まとめ

方法技術特徴推奨度
① Flexboxdisplay: flex簡単・モダン★★★★★
② Griddisplay: gridコード短く応用広い★★★★★
③ transform + position広く使われる古典的手法★★★★☆
④ table-cell旧ブラウザにも対応★★★☆☆
⑤ line-height1行限定、軽量★★★☆☆
⑥ transform(直接 body に)簡潔で効果的★★★★☆
⑦ JavaScriptCSS が使えない時★★☆☆☆
関連記事
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
:not()疑似クラスはCSSでの除外指定に便利ですが、親要素や階層関係に対しては思わぬ制約があります。本記事では、WordPressの投稿構造を例に、インラインコードとコードブロックを正確に区別するためのセレクタ設計を解説します。
無敵の小さな蚊
無敵の小さな蚊
10ヶ月前
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
CSS3で複数行テキストを省略記号(…)で表示する方法【2行以上のellipsis対応】
CSS3の-webkit-line-clampを活用し、複数行テキストを自動で省略記号「…」で表示する方法を解説。2行以上の省略も簡単にコピペで実装できます!
Details
Details
11ヶ月前
CSS3で複数行テキストを省略記号(…)で表示する方法【2行以上のellipsis対応】
和暦から西暦変換ツール
このツールは、日本の元号(和暦)と西暦を相互に変換できるシンプルな変換ツールです。「昭和64年は何年?」「2025年は令和何年?」といった場面で、すぐに答えがわかります。 履歴書の作成、行政手続き、年齢計算、歴史的資料の読み解きなどにご活用 […]
aki0o0
aki0o0
11ヶ月前
和暦から西暦変換ツール
【SEO基礎】rel=”nofollow”とは?リンクの評価をコントロールするHTML属性を解説
SEO対策に欠かせない「rel="nofollow"」の意味と使い方を解説。広告やユーザー投稿に適切なrel属性を設定し、検索エンジンとの正しい関係を築きましょう。
qqplus
qqplus
11ヶ月前
【SEO基礎】rel=”nofollow”とは?リンクの評価をコントロールするHTML属性を解説
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
ブラウザのキャッシュによる古いJavaScript、CSS、画像の表示を防ぐには、URLにバージョン番号や日時パラメータを付けてリソースを更新する方法が有効です。 毎回タイムスタンプを使うとキャッシュ効果がなくなるため、手動や適切なタイミングでバージョン番号を管理するのがおすすめです。
Details
Details
12ヶ月前
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
第1回:ウェブにおける色の基礎(2025年最新版)
ウェブデザインの基礎「色」について、2025年最新トレンドやアクセシビリティ・ダークモード対応まで、実務ですぐ使えるCSS色指定方法を分かりやすく解説。初心者から現場のデザイナーまで必見のカラーマネジメント入門ガイド。
aki0o0
aki0o0
11ヶ月前
JavaScript を使って通貨形式を数値に変換する
JavaScriptの正規表現を利用し、通貨表記に含まれる無効な記号を取り除くことで、簡単に通貨文字列を数値に変換できます。これにより、数値計算や金額比較などが容易になります。
Details
Details
11ヶ月前
JavaScript を使って通貨形式を数値に変換する
SCSSの @for ループ(ループ文)
SCSSの @for ループ
無敵の小さな蚊
無敵の小さな蚊
12ヶ月前
SCSSの @for ループ(ループ文)
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
本コードは典型的なモバイル用サイドナビゲーションの実装例です。ボタンによる表示切替と、メニュー外クリック検知を組み合わせることで、ユーザー体験を向上させています。さらにESCキーでのメニュー閉鎖も可能にし、アクセシビリティも配慮しています。
Details
Details
11ヶ月前
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
CSSで等間隔配置を実現:1行に複数または複数行に配置
CSSでは、特にレスポンシブデザインにおいて、複数の要素を等間隔に配置する必要があります。列数や間隔を動的に制御することで、柔軟なレイアウトが実現可能です。この記事では、FlexboxとGridの2つの方法を使って、1行に複数のアイテムを等間隔に配置する方法を紹介します。コード内の変数(列数や間隔)を調整することで、1行に表示するアイテム数やその間隔を簡単に管理でき、レイアウト調整が容易になり、開発効率が大幅に向上します。
無敵の小さな蚊
無敵の小さな蚊
11ヶ月前
CSSで等間隔配置を実現:1行に複数または複数行に配置
jQuery Sortableがスマホなどのタッチスクリーンで使えない場合の対処法
モバイル端末でのクリックイベントとの競合を避けるため、タップ操作には click より touchstart を使うことを推奨。 jQuery UI のバージョンによっては、内部構造が異なる場合があるため、導入時はテストを行うこと。
Details
Details
11ヶ月前
jQuery Sortableがスマホなどのタッチスクリーンで使えない場合の対処法
【CSS & JavaScript & SVG対応】円グラフ(扇形図)のアニメーション表現まとめ
はじめに 円グラフ(パイチャート)は、比率や構成比を視覚的に伝えるのに最適なUIコンポーネントです。最近、業務で使う機会があり、さまざまな方法でエフェクトをつけて表示する実装を試しました。 この記事では、以下の3パターンで実装する方法を紹介 […]
キウイフルーツ
キウイフルーツ
10ヶ月前
【CSS & JavaScript & SVG対応】円グラフ(扇形図)のアニメーション表現まとめ
日本語用WebサイトのCSSフォント設定(日本語フォント/游ゴシック/游明朝)
日本語フォントはOSにより異なるため、複数のフォントを優先順に指定する。 "Yu Gothic"や"Yu Mincho"はモダンな日本語フォントでWindows 8.1以降に搭載。 "ヒラギノ角ゴ"や"ヒラギノ明朝"はmacOS向けで、高品質。 "メイリオ"や"MS 明朝"などは古いWindows環境にも対応。 ゴシック体はカジュアル・読みやすさ重視、明朝体はフォーマル・高級感重視に適している。
Details
Details
11ヶ月前
日本語用WebサイトのCSSフォント設定(日本語フォント/游ゴシック/游明朝)
【2025年6月最新版】TIOBEインデックスで見る人気プログラミング言語ランキングとは?
2025年6月最新版のTIOBEインデックスから、今人気のプログラミング言語を解説。Python、C、C++、Javaなどの注目度や、インデックスの活用方法も紹介します。
解構人
解構人
11ヶ月前
【2025年6月最新版】TIOBEインデックスで見る人気プログラミング言語ランキングとは?
IT業界の初心者が知っておくべきの用語(2025版)
新しいテクノロジーについて話すとき、時々自分がみんなのペースについていけないと感じることはありませんか?あるいは、その業界にいるのに、自分はまだ十分ではないと感じ、多くの専門用語を理解しなければならないこともあるでしょう。
Details
Details
11ヶ月前
IT業界の初心者が知っておくべきの用語(2025版)