ENTOTSU44

IT系のことを中心に更新してます。

CSSのgridを使うとSafariで崩れる時の対処法

問題点

下のプログラムの様に、CSSで親要素のサイズをgridでのみ指定し明示的に指定しない状態で、子要素でサイズを親要素の最大値に設定すると、ブラウザによって表示のされ方が違う。

See the Pen The table using Grid by ENTOTSU44 (@ENTOTSU44) on CodePen.

環境

ブラウザごとの表示

Chrome

Chromeではwidthheight共に、親要素(.cell)のサイズに指定され、図1の様に正方形が表示される。

f:id:ENTOTSU44:20200126185209p:plain
図1 Chromeの場合

Firefox

FirefoxではChromeと同じでwidthheight共に、親要素(.cell)のサイズに指定され、図2の様に正方形が表示される。

f:id:ENTOTSU44:20200126191545p:plain
図2 Firefoxの場合

Safari

Safariではwidthは親要素(.cell)のサイズに指定されるが、heightは親要素の親要素(#grid)のサイズに指定され、図3の様に長方形が表示される。

gridheightを指定できないというSafariのバグの可能性がある。

f:id:ENTOTSU44:20200126185212p:plain
図3 Safariの場合

解決方法

下の様に親要素にも明示的にサイズを指定すると解決する。

.cell {
  width: 100%;
  height: 100%;
  border: solid 2px;
}