ローディングページ実装時、Androidスマホだけ上部に白枠が出る。
ローディングページとは
Webサイトの読込中に出力するページの事です。読込の進捗状況を表示したり、最初にキャッチフレーズを強制的に出力したりと、いろいろなパターンがあります。
弊社の制作事例で許可を頂いているお客様の事例など
(1)読込の進捗状況を表示したローディングページ
https://totalrepair-fkikaku.com/
(2)最初にキャッチフレーズを出力するローディングページ(トップページのみ)
今回は、(2)の時のローディングページを実装した際に、AndroidのスマホのChromeだけ上部に、なぜか大きな白枠が出る事象がありました。
発生した事象
該当のHTML文(ローディングページの部分)
1 2 3 4 5 | <div id="loading"> <div class="loader anim-typewriter"> <p>欧州の新しい潮流を日本の日常でも</p> </div> </div> |
以下をベースにローディングページを実装
①”loading”
- 幅と高さをブラウザのウィンドウサイズに設定(ウィンドウ一杯に広げる)。
- position:absolute;(絶対位置)で、top:0、left:0の位置へ配置。(画面全体)
- これを、紙芝居のように見せるため一定時間経過後に、left:100%へ動かす。(jsで一定時間経過後に、left:100%で非表示領域へ移動)
- 動かした後は、該当の箇所を削除(jsでleft:100%で非表示領域へ移動した後、さらに一定時間経過後にはloadingを削除(display:none;))
該当のCSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #loading{ display:flex; justify-content:center; align-items:center; width:100vw; height:100vh; background:#fff; z-index:2200; transition:left 650ms cubic-bezier(0.77, 0, 0.175, 1) 100ms; opacity:1; position:absolute; top:0; left:0; } |
該当のJS
setTimeout関数を使い、一定時間経過後に以下を実行する。(本筋ではないため、setTimeoutの記載は省略させてもらいます。JQueryを使用)
1 2 3 4 | jQuery('#loading').css({ 'top':'0', 'left':'100%' }); |
②”loading”の疑似要素before
- ブラウザのウィンドウサイズの幅に対して2倍、縦はウィンドウサイズの高さで設定(幅を2倍にする事で、演目のカーテンのように。)
- position:absolute(絶対位置)で、top:0、left:-200%の位置に配置(ウィンドウの外の左側の位置に配置)
- こちらも、演目(①の後に続くように)のように左から右へ背景を動かす。左の非表示領域から、右の非表示領域へ動かすため、一定時間経過後に、left:0へ動かす。(jsで一定時間経過後に、left:0で、左の非表示領域から右の非表示領域へ移動)
該当のCSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #loading:before{ background: -webkit-gradient(linear, left top, right top, color-stop(20%, #f0be4e), color-stop(80%, #dd640c)); background: linear-gradient(90deg, #f0be4e 20%, #dd640c 80%); content: ''; display: block; width:200vw; height:100vh; position: absolute; top:0; left:-200%; bottom:auto; right:auto; transition:left 1500ms ease-in-out 100ms; } #loading.active:before{ left:0; /* ※1 */ } |
該当のJS
疑似要素(before)に対する操作はできないため、activeクラスを増やす事で対応。activeクラスを増やすと前述のbeforeの疑似要素(※1)が実行される。
1 | jQuery('#loading').addClass('active'); //activeのクラスが追加される事で※1が実行される。 |
この時になぜかAndroidのスマホのChromeだけ上部に、大きな白枠(白いスペース)が出る事象がありました。
原因と対処
bodyに明示的に、position:relative;を指定していなかった事が原因。
親であるbodyにposition:relative;を設置したところ、不具合は解消されました。
もし、同じ事象に遭遇した方は、明示的に親にposition:relative;を指定して見て下さい。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル