【必読】なぜ今、Aura ではなく LWR を選ぶべきなのか?

【LWR小技】ページの途中で背景色が切れてしまう!「height: 100%」の罠と解決法

LWR(Lightning Web Runtime)サイトを構築していて、こんな現象に悩まされたことはありませんか?

「テーマ設定で背景色を変更したのに、長いページだと途中で色が切れて白くなってしまう……」

ピンク色の背景が途中で切れてしまっている。

プレビュー画面や公開サイトでスクロールしてみると、ある地点(ちょうど画面の高さ分くらい)から下が、設定した色ではなくデフォルトの白色になってしまう現象です。

今回は、この「背景色足らず問題」の原因と、コピペで直せる簡単な解決法をご紹介します。

原因:標準スタイルの height: 100%

結論から言うと、原因はLWRサイトが標準で持っているグローバルスタイルの定義にあります。 ブラウザの開発者ツールで確認すると、以下のようなCSSが標準で当たっていることがわかります(sfsites/c/cms/delivery/media/... などの内部リソース)。

/*
 * 標準で定義されているスタイルの一部
 */
html,
body {
    height: 100%; /* ← これが犯人です */
}

html {
    background: white;
}

body {
    margin: 0;
}

この height: 100%; という指定があるため、body 要素の高さが「ブラウザのウィンドウの高さ(ビューポートの高さ)」に固定されてしまっています。 その結果、コンテンツが画面の縦幅を超えて長く続いている場合でも、body 自体は画面の高さまでしか伸びず、背景色もそこで終わってしまうのです。

解決法:ヘッドマークアップで高さを unset する

解決方法はシンプルです。標準のスタイルを上書きして、高さの制限を解除してあげましょう。 以下の手順で設定を行います。

  1. エクスペリエンスビルダーを開きます。
  2. 左側のメニューから [設定] (歯車アイコン) > [詳細] をクリックします。
  3. [ヘッドマークアップを編集] ボタンをクリックします。
  4. 以下のコードをそのまま貼り付けて保存してください。
<style>
    body {
        height: unset;
    }
</style>

これで body 要素の高さがコンテンツに合わせて伸びるようになり、ページの一番下まで綺麗に背景色が適用されるはずです。

背景色がずっと下まで適用されている。

💡 ワンポイント:短いページへの対策

上記の height: unset; だけで解決する場合がほとんどですが、逆に「コンテンツが極端に少ない(画面半分しかない)ページ」がある場合、今度は背景色が画面下まで届かなくなる可能性があります。

どのページでも確実に全画面をカバーしたい場合は、以下のように min-height(最小の高さ)も合わせて指定しておくと完璧です。

<style>
    body {
        height: unset;      /* 上限固定を解除(長いページ用) */
        min-height: 100vh;  /* 最低でも画面いっぱいは確保(短いページ用) */
    }
</style>

まとめ

LWRは高速で柔軟ですが、従来のAuraサイトとは異なるCSSの挙動に戸惑うこともありますよね。 「背景色が切れる!」と思ったら、まずはこの設定を試してみてください。

DXforceの管理人

福島 瑛二

2013年にJavaエンジニアとしてのキャリアをスタート。2019年にSalesforceと出会い、Salesforceエンジニアの道へ。

デザインや UI/UX の観点からもシステムを捉え、ユーザーにとって心地よい体験を実装することにやりがいを感じています。

CRM(顧客データ)や Data Cloud と連携した高度なサイトを目に見える形で表現できる Experience Cloud に大きな可能性を見出しており、バックエンドのデータ構造とフロントエンドの表現力を極めることがこれからの Salesforce エンジニアに求められるスキルだと確信しています。

Trailblazer: efukushima

福島 瑛二をフォローする

読者の声

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