WordPressのブロック非表示とカラム折り返しのブレークポイントがズレてる問題

Cocoonカスタマイズ集
この記事は約4分で読めます。
記事内に広告が含まれています。

はじめに

WordPress 7.0から導入された「ブロック非表示」機能は、ノーコードでレスポンシブ制御ができる非常に便利なアップデートです。

しかし、実際に運用してみると、WordPress標準の「カラム」ブロックが折り返されるタイミングと、この非表示機能が切り替わるタイミング、さらには利用しているテーマ独自のレイアウトブロックとの間で、画面幅の判定(ブレークポイント)に微妙なズレが生じることが分かりました。
このズレを放置すると、「タブレット表示なのに、カラムは縦並びになり、タブレット用ブロックも消えてしまう」といった意図しない表示崩れの原因になります。

この記事では、この方法について説明します。

WordPress 7.0の非表示機能と標準カラムの仕様差

WordPressのGutenbergエディターが出力するCSSを解析すると、出力する標準CSSを解析すると、一見同じに見える782pxの境界線(ブレイクポイント)において、機能ごとに判定基準の不一致(1pxのズレ)が存在することが分かります(表1参照)。

非表示機能と「カラム:ブロックにおけるブレイクポイントの比較
区分ブロックの非表示「カラム」ブロック
デスクトップ782px < 表示幅782px ≦ 表示幅(横並び)
タブレット480px < 表示幅 ≦ 782px表示幅 < 782px(縦並び)
モバイル表示幅 ≦ 480px–

ブロックを非表示

ブロックを非表示

非表示機能では、以下のように3つのセグメントに分かれています。

/* デスクトップで非表示 */
@media (width > 782px) {
  .wp-block-hidden-desktop {
    display: none;
  }
}

/* タブレットで非表示 */
@media (480px < width <= 782px) {
  .wp-block-hidden-tablet {
    display: none;
  }
}

/* モバイルで非表示 */
@media (width <= 480px) {
  .wp-block-hidden-mobile {
    display: none;
  }
}

標準「カラム」ブロックの「モバイルでは縦に並べる」

モバイルでは縦に並べる

一方で、標準のカラムブロック(.wp-block-columns)の折り返し判定は以下のようになっています。

/* モバイルでは縦に並べる */
.wp-block-columns {
  display: flex;
  flex-wrap: wrap;
}

/* 782px以上で横並び */
@media (width >= 782px) {
  .wp-block-columns {
    flex-wrap: nowrap;
  }
}

参考:Cocoonの仕様

ブロックを非表示とレスポンシブスタイル

レスポンシブスタイル

WordPress 7.1から、レスポンシブスタイル(ブレークポイント)に応じたスタイルをtheme.jsonで設定できるようになりました(図3参照)。
これにより、「ブロックを非表示」の機能にもそれが反映されます。

そのため、Cocoon 2.5.9ではレスポンシブスタイルに独自のブレークポイントを反映させています(表2参照)。

Cocoonのブレークポイント
区分Cocoonのブレークポイント
デスクトップ834px < 表示幅
タブレット480px < 表示幅 ≦ 834px
モバイル表示幅 ≦ 480px

「カラム」ブロック

Cocoonの場合、テーマ独自の「2カラム」「3カラム」ブロック(.column-wrap)は、以下のブレークポイントで制御されています。

/* Cocoon独自の「カラム」ブロック */
@media (width <= 834px) {
  .container .column-wrap {
    flex-direction: column;
  }
}

さいごに

WordPress 7.0のブロック非表示機能、標準「カラム」ブロック、そしてCocoonの独自「カラム」ブロックは、それぞれが異なるブレークポイントのロジックで動いているため、レイアウトの不整合(表示崩れ)を引き起こす原因となります。

これらの機能やテーマの間で発生する画面幅の解釈のズレ(仕様差)を防ぐためには、必要に応じて各条件を統一するのが望ましいかと思います。

タイトルとURLをコピーしました