1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Chromeではdisplay: grid以外の要素の中でもjustify-selfが有効になってしまう

Last updated at Posted at 2025-03-23

この記事の概要

タイトルで完結している気もしますが、ブラウザによってjustify-selfの挙動が違うので備忘録がてらまとめた記事です。

なお、この情報は2025年3月23日時点のものです。

前提の確認

justify-selfはGridの中で配置を制御するプロパティです。

CSS Gridを使う場合、多くは親要素から子要素の配置方法を指定するのですが、子要素が自分自身の配置を制御することもできます。

その、自分自身を制御するときに使うプロパティの1つがjustify-selfです。

グリッドのセルの、インライン方向中心1に配置します。

起きる事象

以下の条件で、各ブラウザで表示の違いを確認します。

  • display: blockdisplay: gridのコンテナを作成する
  • それぞれのコンテナの中に3つずつ要素を配置する
  • 1つ目の要素にjustify-self: centerを指定する
実際のコード
<div class="container block">
  <p class="item center">Block item</p>
  <p class="item">Block item</p>
  <p class="item">Block item</p>
</div>

<div class="container grid">
  <p class="item center">Grid item</p>
  <p class="item">Grid item</p>
  <p class="item">Grid item</p>
</div>
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: sans-serif;
  padding: 2rem;
}

.container {
  background-color: #ddd;
  padding: 1rem;
  
  & + .container {
    margin-top: 1rem;
  }
}

.block {
  display: block;
}

.grid {
  display: grid;
}

.item {
  background-color: #eee;
  padding: 0.5rem;
  
  & + .item {
    margin-top: 0.5rem;
  }
}

.center {
  justify-self: center;
}

結果はこのように、Google Chromeだけはdisplay: blockの中でもインライン方向中央に配置されています。

ブラウザ スクリーンショット
Google Chrome Chrome.png
Firefox Firefox.png
Safari Safari.png

blockが特別なわけでもなく、大抵のもの(たとえばlist-itemなどでも)でjustify-self: centerが有効になってしまっていました。

気をつけた方が良いかもしれないこと

マークアップ・スタイリングをしている中で、このような流れはあり得るかと思います。

  • 最初にdisplay: gridを指定してスタイリングをする
  • 途中でflexblockなど違うものに変える

あるいは次のようなパターンも。

  • grid直下の要素にjustify-selfを指定する
  • 間の階層にgridでないdivなどが挟まる

このような場合、最初は正しくjustify-selfが効いているものの、後から意図せぬ表示になってしまいます。
Google Chromeをメインに開発をしていると、こういった場合に気づきづらいです。

もちろんすべてのブラウザで表示確認をしたりVRTを通すようにしていれば良いのですが、軽微な変更で気が緩むこともなくはないのではと思いました。

(というか、上記は私が個人的に開発している小さなプロジェクトで実際に起こした問題です。「気をつけとけアホが」という指摘はごもっともです。)

まとめ

  • Google Chromeではdisplay: grid以外の要素の中でもjustify-selfが有効になってしまう
  • 一見すると正しくレイアウトできていても、他のブラウザで崩れている可能性がある
  • マークアップを変更した際など、一応気をつけておいた方が良い
  1. ざっくり言えば水平方向の中心です。しかし厳密に言えば違うので、ここでは正しさを優先した記載にしています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?