使用 JavaScript 中的定时器和 CSS3 中的圆角矩形,我们可以实现内容载入时的转圈动画。看下面的代码:
<!DOCTYPE html> <html> <head> <title>内容载入时的转圈动画</title> <style type="text/css"> #loaddiv span { position: absolute; 4px; height: 4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } .bullet1 { background:#00F; } .bullet2 { background:#22F; } .bullet3 { background:#44F; } .bullet4 { background:#66F; } .bullet5 { background:#88F; } .bullet6 { background:#AAF; } .bullet7 { background:#CCF; } .bullet8 { background:#EEF; } </style> </head> <body> <div id="loaddiv"> <span class="bullet1"></span><span class="bullet2"></span> <span class="bullet3"></span><span class="bullet4"></span> <span class="bullet5"></span><span class="bullet6"></span> <span class="bullet7"></span><span class="bullet8"></span> </div> <script type="text/javascript"> window.onload = function() { var loader = document.getElementById("loaddiv"); var bullets = loader.getElementsByTagName("span"); initShow(); function initShow() { var x, y; for (var i = 0; i < 8; i++) { x = 8 + 8 * Math.cos(i*Math.PI/4); y = 8 + 8 * Math.sin(i*Math.PI/4); bullets[i].style.left = x + "px"; bullets[i].style.top = y + "px"; } loadShow(0); } function loadShow(idx) { var j; loader.style.visibility = "hidden"; for (var i = 0; i < 8; i++) { j = (idx <= i)? idx - i + 8 : idx - i; bullets[i].className = "bullet" + j; } loader.style.visibility = "visible"; idx = (idx === 7) ? 0 : idx + 1; setTimeout(loadShow, 400, idx); } }; </script> </body> </html>
这个代码运行的结果是8个颜色渐变且不停转圈的小圆点(查看结果)。当然,对于这种情形,也可以用 setInterval 代替 setTimeout。另外,在代码中用 CSS3 实现了一些圆圈,因此不能用在旧版本的浏览器中(详情看前一篇笔记)。
参考资料:
[1] Javascript Loading Screen
[2] JavaScript打造Loading动画效果