次のように、ロードドットを作成します。
0000ミリ秒のスパンコンテンツは次のとおりです。.
0100ミリ秒では、スパンのコンテンツは次のとおりです。..
0200ミリ秒のスパンコンテンツは次のとおりです。...
ループで。
それを作るための最良/最も簡単な方法は何ですか?
<span id="wait">.</span>
<script>
var dots = window.setInterval( function() {
var wait = document.getElementById("wait");
if ( wait.innerHTML.length > 3 )
wait.innerHTML = "";
else
wait.innerHTML += ".";
}, 100);
</script>
または、空想を得て、それらを前後に移動させることができます:
<span id="wait">.</span>
<script>
window.dotsGoingUp = true;
var dots = window.setInterval( function() {
var wait = document.getElementById("wait");
if ( window.dotsGoingUp )
wait.innerHTML += ".";
else {
wait.innerHTML = wait.innerHTML.substring(1, wait.innerHTML.length);
if ( wait.innerHTML === "")
window.dotsGoingUp = true;
}
if ( wait.innerHTML.length > 9 )
window.dotsGoingUp = false;
}, 100);
</script>
または、それらをランダムに行き来させることができます。
<span id="wait">.</span>
<script type="text/javascript">
var dots = window.setInterval( function() {
var wait = document.getElementById("wait");
if ( Math.random() < .7 )
wait.innerHTML += ".";
else
wait.innerHTML = wait.innerHTML.substring(1, wait.innerHTML.length);
}, 100);
</script>
または、私は人生を得て、追加のスニペットを投稿するのをやめることができました....:D
Ivoがコメントで述べたように、特に待機が終了した後に新しいページをロードしていない場合、ある時点で 間隔をクリア する必要があります。 :D
または.. CSSでそれを行うことができます;)
<p class="loading">Loading</p>
.loading:after {
content: ' .';
animation: dots 1s steps(5, end) infinite;
}
@keyframes dots {
0%, 20% {
color: rgba(0,0,0,0);
text-shadow:
.25em 0 0 rgba(0,0,0,0),
.5em 0 0 rgba(0,0,0,0);}
40% {
color: white;
text-shadow:
.25em 0 0 rgba(0,0,0,0),
.5em 0 0 rgba(0,0,0,0);}
60% {
text-shadow:
.25em 0 0 white,
.5em 0 0 rgba(0,0,0,0);}
80%, 100% {
text-shadow:
.25em 0 0 white,
.5em 0 0 white;}}
これは、VeikoJäägerのソリューションに似ています。このソリューションでは、ドットの色は関連付けられているテキストと同じです。
<html>
<head>
<style>
.appendMovingDots:after {
content: ' .';
animation: dots 3s steps(1, end) infinite;
}
@keyframes dots {
0%, 12.5% {
opacity: 0;
}
25% {
opacity: 1;
}
37.5% {
text-shadow: .5em 0;
}
50% {
text-shadow: .5em 0, 1em 0;
}
62.5% {
text-shadow: .5em 0, 1em 0, 1.5em 0;
}
75% {
text-shadow: .5em 0, 1em 0, 1.5em 0, 2em 0;
}
87.5%, 100%{
text-shadow: .5em 0, 1em 0, 1.5em 0, 2em 0, 2.5em;
}
}
</style>
</head>
<body>
<span class="appendMovingDots" style="font-size:20px">This is a test</span>
</body>
</html>
var span = document.getElementById('myspan');
var int = setInterval(function() {
if ((span.innerHTML += '.').length == 4)
span.innerHTML = '';
//clearInterval( int ); // at some point, clear the setInterval
}, 100);
私の考えでは、最も簡単な方法はif
/else
ステートメントです。
ただし、ドット長と有名なArray.join
-hack dot-charを繰り返すには、トリックも行う必要があります。
function dotdotdot(cursor, times, string) {
return Array(times - Math.abs(cursor % (times * 2) - times) + 1).join(string);
}
var cursor = 0;
setInterval(function () {
document.body.innerHTML = dotdotdot(cursor++, 3, '.')
}, 100);
「count-up-and-down」部分と「string-repetition」を別々の関数でラップすることにより、読みやすさを少し改善できます。
例: https://codepen.io/lukaszkups/pen/NQjeVN
CSS content
もアニメーション化できます!
// HTML
<p>Loading<span></span><p>
// CSS (nested SASS)
p
span
&:before
animation: dots 2s linear infinite
content: ''
@keyframes dots
0%, 20%
content: '.'
40%
content: '..'
60%
content: '...'
90%, 100%
content: ''