2007年1月14日15:20:31

提示页面载入中的JS代码

在一些网站上会有“网页载入中…”的提示,特别是用javascript实现动画效果,感觉比较好,因为这样一来给人一个“等待”的温馨提示,比枯燥的等待在心理上要好得多。

自从泊客Myheimu链接转移到DreamHost之后,虽然各方面都挺好,但是速度一直不尽如人意。运行速度还可以,传输速度不是太高,在加上网页(特别是主页)的图片、JS代码比较多,在IE下的显示就有很大的迟钝,因为IE中每一模块基本上是统一显示,需全部下载后才可显示。

这种效果的实现方式很多,而我最后选择的是这样的一种方式:

后记:早就想写这篇文章了,可是懒得不愿写,一直存为草稿。最近中国台湾附近的地震造成国际互联网光缆损坏,速度更慢了。而www.higod.cn链接的站长Email我说这种效果怎么做,那么我得将这篇文章写出来了。

我也是在网上找到的代码,但是代码是通过先设置< style type="text/css">和js代码,然后在< body>里添加很多东西实现的。我简化了步骤,让css代码和js代码都在页面head部尽量靠前的位置直接执行。

PS(2007.11.24):我发现这代码很不好用,有很多问题,所以后来自己也不愿意用了,最近拿出来考察一番,发现有一些地方需要改动,改动之后才能更好得显示。具体改动如下:

第一:我使用的时候总是会使后面的内容直接覆盖了这个“载入中”的框,我才发现原来的代码中,居然将z-index的设置放在了loading之中,而最外层的loading_container却没有设置z-index,这造成整个框体的z-index知识auto。并且我觉得这个框体应当在所有内容之前,所以增加了z-index值,并加到loading_container的属性中。

第二:在firefox下总是无法实现载入的滑动效果,查了“错误控制台”,发现一堆的“分析属性’width’值时出错。声明被丢弃。”,想到原因是XHTML标准中,width、height、top、left这些属性赋值的时候必须加上单位。

第三:这个载入框的宽度很难调整。loading_container和loading的宽度都是单独设置的,而且js代码也只是针对原本的宽度。我这里使用js代码自动来设置宽度,对loading的宽度用百分比来实现,对载入中的滑动条的变换也适用宽度变量自动调整。

以下是我多次修改之后的代码,我使用的是浅蓝色色系的颜色,请把它加入到< head>< /head>部分尽量靠前的部分。

  1. <style type="text/css">
  2. #loading_container {
  3. text-align: center;
  4. position: fixed !important;
  5. position: absolute;
  6. top: 40%;
  7. left: 0;
  8. width: 100%;
  9. z-index: 10001;
  10. }
  11. #loading {
  12. font-family: Tahoma, Helvetica, sans;
  13. font-size: 12px;
  14. color: #003d88;
  15. background-color: #d2e6ff;
  16. padding: 10px 0 16px 0;
  17. margin: 0 auto;
  18. display: block;
  19. border: 1px solid #81b9ff;
  20. text-align: left;
  21. }
  22. #loading_bg {
  23. background-color: #eff6ff;
  24. position: relative;
  25. top: 8px;
  26. left: 2%;
  27. height: 7px;
  28. width: 96%;
  29. font-size: 1px;
  30. }
  31. #progress {
  32. height: 5px;
  33. font-size: 1px;
  34. width: 1px;
  35. position: relative;
  36. top: 1px;
  37. left: 0px;
  38. background-color: #77A9E0;
  39. }
  40. </style>
  41.  
  42. <script language="JavaScript" type="text/javascript">
  43. <!--
  44. document.write('<div id="loader_container"><div id="loading"><div align="center">页面正在很用力de加载中……<br />欢迎光临泊客Myheimu!<\/div><div id="loading_bg"><div id="progress"> <\/div><\/div><\/div><\/div>');
  45. var t_id = setInterval(animate,20);
  46. var pos=0;
  47. var dir=4;
  48. var len=0;
  49. var width = 300;//此处修改loader的宽度,其他内容和动态滑动条会自动适应。
  50. var elem = document.getElementById('progress');
  51. var o = document.getElementById('loader');
  52. o.style.width = Math.floor(width / 0.96) + "px";
  53.  
  54. function animate() {
  55. if(elem != null) {
  56. if (pos==0) len += dir;
  57. if (len>32 || pos>= width - 32) pos += dir;
  58. if (pos >= width - 32) len -= dir;
  59. if (pos >= width - 32 && len < = 0) pos=0;
  60. elem.style.left = pos + "px";
  61. elem.style.width = len + "px";
  62. }
  63. }
  64. function remove_loading() {
  65. var targelem = document.getElementById('loading_container');
  66. this.clearInterval(t_id);
  67. targelem.style.display='none';
  68. targelem.style.visibility='hidden';
  69. }
  70. //-->
  71. </script>

然后在< body>里变成(是两个尖括号里面)

  1. <body onload="remove_loading()"></body>

2007年12月16日 其实使用过程中我仍然发现运行起来偶尔会出现问题,移动的颜色块会只在那里抖动,这可能是页面下载后javascript产生的一些异动。又看到一些网站开始用gif动画来实现这种效果了,摒除了javascript可能造成的不良效果,很好很好!详细代码见《用图片动画实现的提示页面载入中》

本文共有 6 条评论提示页面载入中的JS代码


  1. Gravatar 1 你好,上帝 2007-1-17 0:20

    老大…
    感谢啊….
    正在试呢….

  2. Gravatar 2 你好,上帝 2007-1-17 2:16

    终于好了…
    :-) 还有很多疑问的…
    再试几天…
    不行的话再mail了

  3. Gravatar 3 你好,上帝 2007-1-22 2:32

    想请问一下…
    就这篇文章..
    2007.01.14 3:20 pm in 建站手记&WordPress. 1554字 热度:150 ℃

    那个热度:150 ℃是什么?关注么?

  4. Gravatar 4 myheimu 2007-1-25 14:26

    你很聪明呀,呵呵!
    早先我在一些网站上看过类似的做法,我最近找到了一个显示浏览次数的插件,顺便就改成这中显示形式,我还准备使它能够根据数量的多少显示不同的颜色。

  5. Gravatar 5 你好,上帝 2007-2-11 6:10

    现在已经完完全全用了搂主提供的代码….收藏中..

  1. 6 你好,上帝 Trackback2007-3-14 0:36

请留下您的评论:

您可以使用以下XHTML代码: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>