上で@Snekwが提案した善良な人として、私は問題を解決することができました。ここにすべてのコードがあります。
他の誰かが同じ問題に直面している場合、それはあなたにも役立つかもしれません。
これは、ページの構造がどのように見えるかです(スピナーローダーを配置したいページ)
(すべての非同期および未解決の属性に注意してください)
<head>
...
<script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
...
<link rel="import" id="bundle" href="/elements/elements.html">
...
</head>
<body>
<div id="loader-wrapper" async">
<div id="loader"></div>
</div>
<style async>
...
</style>
<template unresolved>
....
</template>
<script src="scripts/app.js" async></script>
</body>
次に、app.js ファイルを開きます(Polymer スターター キット アドバンスドは、デフォルトで /app/scripts/ にあります)。
そしてこれを見つけます:
// See https://github.com/Polymer/polymer/issues/1381
window.addEventListener('WebComponentsReady', function() {
// imports are loaded and elements have been registered
...
});
次に、@Snekwが提案したコードを追加するだけで、次のようになります
// See https://github.com/Polymer/polymer/issues/1381
window.addEventListener('WebComponentsReady', function() {
// imports are loaded and elements have been registered
var loaderWrapper = document.getElementById('loader-wrapper');
loaderWrapper.parentNode.removeChild(loaderWrapper);
});
ローダー div の名前を確認してください。ローダー ラッパーでない場合は、上記の jquery コードで名前を変更することも忘れないでください。
スピナー ローダー アニメーション自体の作成方法がわからない場合は、次のコードを使用してください。
<div id="loader-wrapper" async style="z-index: -100; ">
<div id="loader"></div>
</div>
<style async>
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1000;
}
#loader {
display: block;
position: relative;
left: 50%;
top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #3498db;
-webkit-animation: spin 2s linear infinite; /* Chrome, Opera 15+, Safari 5+ */
animation: spin 2s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */
}
#loader:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #e74c3c;
-webkit-animation: spin 3s linear infinite; /* Chrome, Opera 15+, Safari 5+ */
animation: spin 3s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */
}
#loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #f9c922;
-webkit-animation: spin 1.5s linear infinite; /* Chrome, Opera 15+, Safari 5+ */
animation: spin 1.5s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg); /* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0deg); /* IE 9 */
transform: rotate(0deg); /* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg); /* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg); /* IE 9 */
transform: rotate(360deg); /* Firefox 16+, IE 10+, Opera */
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg); /* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0deg); /* IE 9 */
transform: rotate(0deg); /* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg); /* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg); /* IE 9 */
transform: rotate(360deg); /* Firefox 16+, IE 10+, Opera */
}
}
</style>
の代わりにそこに置く
これ
<div id="loader-wrapper" async">
<div id="loader"></div>
</div>
<style async>
...
</style>
更新: 重要な注意事項
1〜3秒のスムーズなアニメーションを表示してからメインコンテンツのページをスムーズに表示するのに時間がかかるため、Firefoxでは完全かつスムーズに動作します
ただし、非常に軽量なページを Chromium のようなブラウザーで開いた場合、ページは Firefox よりもはるかに高速に読み込まれ (おそらく Firefox がポリフィルを読み込むため)、アニメーションはほとんど表示されず、ページの読み込みが原因で不具合が発生する可能性があります。そんなに早く。
これを解決するために、animate.css ( https://github.com/daneden/animate.css ) を使用し、テンプレート全体を
<div class="animated fadeIn">
<template....
...
</div>
そして、変更しました
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
に
.animated {
-webkit-animation-duration: 3s;
animation-duration: 3s;
animate.cssで
その後、インポート
<link rel="stylesheet" href="../../styles/animate.css">
elements.html へ
必要に応じて、よりスマートなことを行ってください。私は Web 開発が初めてなので、他のことは知りません。他の誰かがここにいくつかのアイデアを追加するかもしれません。