Javascript 点作为加载点?
我想创建一些加载点,如下所示: 0000毫秒时,量程内容为:Javascript 点作为加载点?,javascript,css,animation,loading,Javascript,Css,Animation,Loading,我想创建一些加载点,如下所示: 0000毫秒时,量程内容为: 0100毫秒时,量程内容为:。 0200毫秒时,量程内容为:… 在一个循环中 最好/最简单的方法是什么?示例: 。 var dots=window.setInterval(函数(){ var wait=document.getElementById(“wait”); 如果(wait.innerHTML.length>3) wait.innerHTML=“”; 其他的 wait.innerHTML+=”; }, 100); 或者,你
0100毫秒时,量程内容为:。
0200毫秒时,量程内容为:…
在一个循环中
最好/最简单的方法是什么?示例:
。
var dots=window.setInterval(函数(){
var wait=document.getElementById(“wait”);
如果(wait.innerHTML.length>3)
wait.innerHTML=“”;
其他的
wait.innerHTML+=”;
}, 100);
或者,你可以想象一下,让它们前后移动:
<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>
。
window.dotsGoingUp=true;
var dots=window.setInterval(函数(){
var wait=document.getElementById(“wait”);
如果(window.dotsGoingUp)
wait.innerHTML+=”;
否则{
wait.innerHTML=wait.innerHTML.substring(1,wait.innerHTML.length);
如果(wait.innerHTML==“”)
window.dotsGoingUp=true;
}
如果(wait.innerHTML.length>9)
window.dotsGoingUp=false;
}, 100);
或者你可以让他们随机来回:
<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>
。
var dots=window.setInterval(函数(){
var wait=document.getElementById(“wait”);
if(Math.random()<.7)
wait.innerHTML+=”;
其他的
wait.innerHTML=wait.innerHTML.substring(1,wait.innerHTML.length);
}, 100);
或者我可以得到一条生命,不再发布更多的片段D
正如Ivo在评论中所说,您需要在某一点上进行修改,尤其是在等待结束后没有加载新页面的情况下D或。。您可以使用CSS;) 加载 .装货:在{ 内容:‘’; 动画:点1步(5,结束)无限; } @关键帧点{ 0%, 20% { 颜色:rgba(0,0,0,0); 文本阴影: .25em 0 rgba(0,0,0,0), .5em 0 rgba(0,0,0,0);} 40% { 颜色:白色; 文本阴影: .25em 0 rgba(0,0,0,0), .5em 0 rgba(0,0,0,0);} 60% { 文本阴影: .25em 0 0白色, .5em 0 rgba(0,0,0,0);} 80%, 100% { 文本阴影: .25em 0 0白色, .5em 0 0白色;}
在我看来,最简单的方法是使用
if
/else
语句
然而,一点数学来计算点的长度和著名的数组
函数点(光标、时间、字符串){
返回数组(times-Math.abs(游标%(times*2)-times)+1);
}
var=0;
setInterval(函数(){
document.body.innerHTML=dotdot(光标++,3'。)
}, 100);代码>这类似于Veiko Jäger的解决方案。使用此解决方案,点的颜色与其关联的文本相同
.appendMovingDots:之后{
内容:‘’;
动画:点3步(1,结束)无限;
}
@关键帧点{
0%, 12.5% {
不透明度:0;
}
25% {
不透明度:1;
}
37.5% {
文本阴影:.5em 0;
}
50% {
文本阴影:.5em 0,1em 0;
}
62.5% {
文本阴影:5em 0、1em 0、1.5em 0;
}
75% {
文本阴影:5em 0、1em 0、1.5em 0、2em 0;
}
87.5%, 100%{
文本阴影:5em 0、1em 0、1.5em 0、2em 0、2.5em;
}
}
这是一个测试
示例:
你也可以设置css内容的动画
// 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: ''
//HTML
装载
//CSS(嵌套的SASS)
P
跨度
&:之前
动画:点2s线性无限
内容:“”
@关键帧点
0%, 20%
内容:'.'
40%
内容:“…”
60%
内容:“…”
90%, 100%
内容:“”
使用String.prototype.repeat()
您可以执行以下操作:
var element = document.querySelector(...);
var counter = 0;
var intervalId = window.setInterval(function() {
counter += 1
element.innerHTML = '.'.repeat(1 + counter % 3)
}, 350);
// Use the following to clear the interval
window.clearInterval(intervalId)
注意:String.prototype.repeat()
当前在中不受支持,如果您只需在span内容中添加“.”每100ms,它是否有效?span.innerHTML+=”;我喜欢这个直观的标题。非常好的标题!!!是的,但过一段时间后就会产生。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。很长的跨度。在3个点之后,我如何才能清除它?@Thew:每次只需测试innerHTML
的length
,然后使用我附带的clearInterval
。我不知道你只想要3个。现在让间隔一直持续下去有什么意义呢?有3个点吗?;)@伊沃:嗯。。。当有三个点时,它会回到零。等等用于加载动画或其他内容。@thejh-Hm?啊。。。另一个答案上有一条更新评论,总是喜欢不完整/措词错误的问题。在React应用程序中有没有使用此选项的方法?最好的方法是使用css,请参阅下一个答案是否与旧浏览器兼容?@BabuJames“What”是旧的?IE8之类的?不,遗憾的是没有!你如何使它更快?真的很漂亮很干净way@MoneceSolis将1s
更改为0.5s
以使其运行更快这是一个简单而有效的解决方案。谢谢!我甚至为此写了一篇博文:D
<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;}}
// 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: ''
let span = document.querySelector('span');
i = 0;
setInterval(() => {
span.innerText = Array(i = i > 2 ? 0 : i + 1).fill('.').join('');
}, 500)
var element = document.querySelector(...);
var counter = 0;
var intervalId = window.setInterval(function() {
counter += 1
element.innerHTML = '.'.repeat(1 + counter % 3)
}, 350);
// Use the following to clear the interval
window.clearInterval(intervalId)