ルートパディングとは何ですか?
settings.useRootPaddingAwareAlignments
プロパティがどのように機能するかを理解する前に、まずルートパディングが何であるかを理解する必要があります。
ルートパディングは、ウェブページの「ルート」要素に適用されるパディングです。WordPress テーマの場合、これは <body>
要素です。ルート要素の間隔をカスタマイズするには、theme.json
で styles.spacing.padding
要素をターゲットにする必要があります。
次の theme.json
スニペットを例にとってみましょう。これは、上部と下部のパディングに 0
を追加し、左側と右側のパディングに 2rem
を追加します:
{
"version": 2,
"styles": {
"spacing": {
"padding": {
"top": "0",
"bottom": "0",
"left": "2rem",
"right": "2rem"
}
}
}
}
デフォルトでは、これにより <body>
(ルート) 要素の左側と右側に 2rem
のパディングが追加されます。
このスクリーンショットに示されているように、ルートには水平パディングがあり、フル幅のカバーブロックはそのパディングに当たるまで伸びます:
これは、上記の theme.json
コードに基づいて WordPress が出力する CSS です:
body {
padding-top: 0;
padding-right: 2rem;
padding-bottom: 0;
padding-left: 2rem;
}
しかし、ここで経験豊富なデザイナーには奇妙に見えるかもしれませんが、settings.useRootPaddingAwareAlignments
が有効になっていると、ルートパディングはもはやルート要素に適用されません。これは、グループのようなコンテナブロックに適用されます。
なぜこれが起こるのかについては、次のセクションで詳しく学びます。今の主な目標は、ルートパディングが伝統的に <body>
要素に適用されることを理解することであり、これはほとんどのテーマ作成者が期待することです。
ルートパディングを意識したアラインメントに関して、WordPress は水平 (左と右) パディングのみに関心があります。したがって、垂直 (上と下) パディングはこの文書には関連しません。
ルートパディングを意識したアラインメントの有効化
デフォルトでは、WordPress は <body>
要素にルートパディングを適用します。これがテーマのデザインにとって意味がある場合、他に何もする必要はありません。
しかし、フル幅のアイテムを画面の端まで伸ばし、**かつ** ルート要素にパディングを持たせたい場合はどうしますか?
最初のスクリーンショットと比較して、カバーブロックが画面の端まで伸びていることに気付いてくださいが、ここではネストされたブロックにまだパディングが適用されています:
これは一般的なデザインパターンであり、CSS で要素をコンテナの外に伸ばす方法はいくつかあります。しかし、WordPress にはどのテーマでも機能する標準的なアプローチがあります。
そこで settings.useRootPaddingAwareAlignments
が登場します。このプロパティが true
に設定されると、ルートパディングは <body>
ではなくコンテナ要素に適用されます。これは、特に水平パディングが適用された styles.spacing.padding
オブジェクトと組み合わせる必要があります。
このコードを theme.json
に試してみてください:
{
"version": 2,
"settings": {
"useRootPaddingAwareAlignments": true
},
"styles": {
"spacing": {
"padding": {
"top": "0",
"bottom": "0",
"left": "2rem",
"right": "2rem"
}
}
}
}
ルートパディングを扱う正しい方法や間違った方法はありません。それは状況に応じた設定であり、テーマのデザインに最適なオプションを決定する必要があります。
これはどのように機能しますか?
WordPress がこれをどのように処理しているかを知ることは特に重要ではありませんが、時には何が起こっているのかをより深く理解したい場合があります。
settings.useRootPaddingAwareAlignments
を有効にすると、前の theme.json
の例に示されているように、WordPress は 2 つの新しい CSS を生成します。最初は、ルートパディングのためのいくつかの CSS カスタムプロパティを定義します:
body {
--wp--style--root--padding-top: 0;
--wp--style--root--padding-right: 2rem;
--wp--style--root--padding-bottom: 0;
--wp--style--root--padding-left: 2rem;
}
2 番目は、.has-global-padding
クラスを追加します:
.has-global-padding {
padding-right: var(--wp--style--root--padding-right);
padding-left: var(--wp--style--root--padding-left);
}
このクラスは、制約のあるレイアウトを持つコンテナブロックに与えられます (たとえば、レイアウト > 内部ブロックはコンテンツ幅を使用 オプションが有効になっているグループブロック):
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<!-- nested blocks... -->
</div>
それを超えて、WordPress はネストされたワイドおよびフル幅のブロックを親ブロックの幅を超えて伸ばすためのインライン CSS を追加します (追加されたパディングが幅に含まれます)。