分析結果などを表示するサイトで分析結果のページが表示する前に「分析中~。。。」などど別ページを表示させる方法です。
仕組み
メインのページの上にローディングのページを重ね、ローディングページのプログレスバーの作動が終わったらそのページを消すという仕組みです。
HTMLの最初にローディングページHTMLを記載しその後に通常のHTMLを記載します。
必要なもの
「jquery」とプログレスバーを表示させる「progressbar.min.js」、サンプルではCDNで読み込んでいます。
注意点
重なり順・・・ローディングページが最前面になるように「z-index」を指定。※サンプルは最前面。
画面が消える時間・・・プログレスバーが終わる時間とローディングページが消える時間を合わせないとプログレスバー作動途中でページが消えてしまいます。※サンプルでは「10000」
サンプル
サンプルHTML ※Bootstrap5(単体で動きます)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
<!doctype html> <html lang="ja"> <head> <title>ローディング画面を表示</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous"> <!-- ローディング画面 CSS --> <style> #loading-screen { position: fixed; z-index: 2147483647; width: 100%; height: 100%; background:#fff; } </style> </head> <body> <!-- ローディング画面表示HTML --> <link href="https://fonts.googleapis.com/css?family=Raleway:400,300,600,800,900" rel="stylesheet" type="text/css"> <div id="loading-screen"> <div class="row justify-content-center"> <div class="col-10 col-md-4"> <div id="container"></div> </div> </div> </div> <!-- /ローディング画面表示HTML --> <!-- ローディング画面表示後のHTML --> <div class="row justify-content-center"> <div class="col-11 col-md-5 mt-5"> <h3 align="center">ローディング画面表示後に表示したいコンテンツここから</h3> </div> </div> <!-- /ローディング画面表示後のHTML --> <!-- Bootstrap5 JavaScript Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ek" crossorigin="anonymous"></script> <!-- jquery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- ローディング画面表示script --> <script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/master/dist/progressbar.min.js"></script> <script> var bar = new ProgressBar.SemiCircle(container, { strokeWidth: 6, color: '#FFEA82', trailColor: '#eee', trailWidth: 1, easing: 'easeInOut', duration: 10000, svgStyle: null, text: { value: '', alignToBottom: false }, from: {color: '#FFEA82'}, to: {color: '#ED6A5A'}, step: (state, bar) => { bar.path.setAttribute('stroke', state.color); var value = Math.round(bar.value() * 100); if (value === 0) { bar.setText(''); } if (value === 100) { bar.setText(value + '%'); } else { bar.setText(value + ' /100%'); } bar.text.style.color = state.color; } }); bar.text.style.fontFamily = '"Raleway", Helvetica, sans-serif'; bar.text.style.fontSize = '2rem'; bar.animate(1.0); </script> <!-- ローディング画面を消すscript --> <script> setTimeout(function() { $('#loading-screen').fadeOut("slow"); }, 10000); </script> </body> </html> |
コメント