在一些网站上会有“网页载入中…”的提示,特别是用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>部分尽量靠前的部分。
- <style type="text/css">
- #loading_container {
- text-align: center;
- position: fixed !important;
- position: absolute;
- top: 40%;
- left: 0;
- width: 100%;
- z-index: 10001;
- }
- #loading {
- font-family: Tahoma, Helvetica, sans;
- font-size: 12px;
- color: #003d88;
- background-color: #d2e6ff;
- padding: 10px 0 16px 0;
- margin: 0 auto;
- display: block;
- border: 1px solid #81b9ff;
- text-align: left;
- }
- #loading_bg {
- background-color: #eff6ff;
- position: relative;
- top: 8px;
- left: 2%;
- height: 7px;
- width: 96%;
- font-size: 1px;
- }
- #progress {
- height: 5px;
- font-size: 1px;
- width: 1px;
- position: relative;
- top: 1px;
- left: 0px;
- background-color: #77A9E0;
- }
- </style>
- <script language="JavaScript" type="text/javascript">
- <!--
- 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>');
- var t_id = setInterval(animate,20);
- var pos=0;
- var dir=4;
- var len=0;
- var width = 300;//此处修改loader的宽度,其他内容和动态滑动条会自动适应。
- var elem = document.getElementById('progress');
- var o = document.getElementById('loader');
- o.style.width = Math.floor(width / 0.96) + "px";
- function animate() {
- if(elem != null) {
- if (pos==0) len += dir;
- if (len>32 || pos>= width - 32) pos += dir;
- if (pos >= width - 32) len -= dir;
- if (pos >= width - 32 && len < = 0) pos=0;
- elem.style.left = pos + "px";
- elem.style.width = len + "px";
- }
- }
- function remove_loading() {
- var targelem = document.getElementById('loading_container');
- this.clearInterval(t_id);
- targelem.style.display='none';
- targelem.style.visibility='hidden';
- }
- //-->
- </script>
然后在< body>里变成(是两个尖括号里面)
- <body onload="remove_loading()"></body>
2007年12月16日 其实使用过程中我仍然发现运行起来偶尔会出现问题,移动的颜色块会只在那里抖动,这可能是页面下载后javascript产生的一些异动。又看到一些网站开始用gif动画来实现这种效果了,摒除了javascript可能造成的不良效果,很好很好!详细代码见《用图片动画实现的提示页面载入中》









老大…
感谢啊….
正在试呢….
终于好了…
还有很多疑问的…
再试几天…
不行的话再mail了
想请问一下…
就这篇文章..
2007.01.14 3:20 pm in 建站手记&WordPress. 1554字 热度:150 ℃
那个热度:150 ℃是什么?关注么?
你很聪明呀,呵呵!
早先我在一些网站上看过类似的做法,我最近找到了一个显示浏览次数的插件,顺便就改成这中显示形式,我还准备使它能够根据数量的多少显示不同的颜色。
现在已经完完全全用了搂主提供的代码….收藏中..