jQuery 页面载入进度条

页面 Loading 条基本人人都会用。它的原理很简单:在页头放置一个文字或者图片的 loading 状态,然后页尾载入一段 JS 隐藏掉,即根据浏览器的载入顺序来实现的简易 Loading 状态条。

loading Process traditional

上图展示了传统 Wordpress 模板在浏览器中的载入顺序,Loading 条的出现和消失分布于头尾。

new loading bar

如果我们在页面的不同位置放置多个 JS ,每个 JS 用于逐步增加 Loading 条的宽度,那么这个 Loading 条无疑会更具实用价值。它在一定程度上缓解了访客等待载入的枯燥感,同时还能客观反映页面载入的进度。若再配以 jQuery 内建的动画效果,其完全可以与浏览器自带的状态条媲美。

先来看一个演示:地址

要得到演示上的进度条效果,首先,引入 jQuery 框架(一定要放在页头 <head> 标签内)。然后在 <body> 标签起始位置放置:

<div id="loading"><div></div></div>

CSS 可以这么写:

#loading {
width:100px;
height:20px;
background:#A0DB0E;
padding:5px;
position:fixed;
left:0;
top:0;
}
#loading div {
width:1px;
height:20px;
background:#F1FF4D;
}

准备工作到这里就做好了。

接着,请随意发挥,依照你对图二的理解,在模板各个部分的适当位置放置:

<script type="text/javascript">
$("#loading div").animate({width:"16px"})
</script>

其中红色数值应该随载入顺序逐步增加,直到 footer.php。另外别忘了在 footer.php 最末尾放上:

<script type="text/javascript">
$("#loading").fadeOut()
</script>

用于载入完毕后隐藏进度条。

Tag(s):
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
Shawn Published@17:40 / 2009-01-07 / Trackback / Skip
69 Comments Contributed by Visitors
  1. rebuttonLorz / 17:43@2009-01-07 1
    Lorz

    沙发?!

  2. rebuttonShawn / 17:45@2009-01-07 2
    Shawn

    @Lorz: 看来,Friendfeed 比 Twitterfeed 快100倍。

  3. rebuttonYacca / 17:56@2009-01-07 3
    Yacca

    嗯? 等待新皮里再折腾...旧皮不搞了...话说这loading的确是有这个必要滴..

  4. rebuttonLeeiio / 17:57@2009-01-07 4
    Leeiio

    呃,我就是看了Twitter才慢了。

  5. rebuttonLeeiio / 18:00@2009-01-07 5
    Leeiio

    不錯,增加寬度的進度條更炫了,flash般的效果。

  6. rebuttonShawn / 18:01@2009-01-07 6
    Shawn

    @Leeiio: 呵呵,好看是一方面,最好的是这么放确实能够精确展示载入进度,除了有点点麻烦外。

  7. rebuttonGeedr.com / 18:12@2009-01-07 7
    Geedr.com

    达人啊达人,太炫了,膜拜

  8. rebuttonZoll / 18:19@2009-01-07 8
    Zoll

    大家这么快。。刚刚还在改GR的脚本来着,发现更新就奔过来了。。
    这个好像在awflasher那里看到了效果,没有细想是怎么实现的。。
    没想到是animate,我最近也才用上了这个家伙 呵呵~

  9. rebuttonShawn / 18:21@2009-01-07 9
    Shawn

    @Zoll: awflasher 那里没有用 animate,是更直观的 .css

  10. rebuttoniColor / 18:22@2009-01-07 10
    iColor

    太实用了,对于像我那个图多的站更应该加个这小东西,哈哈...
    看着好像不是很麻烦...

  11. rebuttonShawn / 18:25@2009-01-07 11
    Shawn

    @Geedr.com: 什么时候回家?

    @iColor: 其实不麻烦,就是在 index.php single.php sidebar.php footer.php 的适当位置加几个变换宽度的 js,你有耐心的话还可以让宽度变化更丰富一些,这样进度更精准。

  12. rebuttonShawn / 18:27@2009-01-07 12
    Shawn

    @Zoll: 呵呵,Animate 是所有 effects 的基础,只是因为有很多现成的,反而被大家忽略了。

  13. rebuttonZoll / 18:27@2009-01-07 13
    Zoll

    @Shawn: 貌似也的确不是jQuery效果,没有那么流畅。。CSS也能完成的话,那应该也麻烦很多吧。。一知半解,呵呵。。

  14. rebutton浮黑 / 18:29@2009-01-07 14
    浮黑

    我的新Theme在js方面还是一片空白呢,正好可以用上

  15. rebuttonShawn / 18:30@2009-01-07 15
    Shawn

    @Zoll:举例就明白了。$("#loading div").css("width","16px"),是 jQuery 的 css 工具。

  16. rebuttonZH CEXO / 18:31@2009-01-07 16
    ZH CEXO

    很好,以后加~

  17. rebuttonleehow / 18:41@2009-01-07 17
    leehow

    你今天过得还算低调,居然不尊重我的劳动成果。

  18. rebuttonShawn / 18:42@2009-01-07 18
    Shawn

    @leehow: 我一定要低调。。。我不喜欢 B。。。

  19. rebuttonleehow / 18:44@2009-01-07 19
    leehow

    @Shawn: 了解,再过两个星期高调。

  20. rebuttonZoll / 18:51@2009-01-07 20
    Zoll

    @Shawn: 哈哈 原来是这样~ 还是jQuery 殊途同归呀 呵呵~

  21. rebuttonShawn / 18:53@2009-01-07 21
    Shawn

    @Zoll: 是的,不过出于增强视觉效果的目的,animate 的应用就可以在这里体现了。

  22. rebuttoncosbeta / 18:53@2009-01-07 22
    cosbeta

    赞!这样文章的风格。简单明了,一般名师才能做到,哈哈

  23. rebuttondimlau / 18:55@2009-01-07 23
    dimlau

    loading框的所有设计尺寸的样式最好都用JS加入,否则如果浏览器禁用了JS或者因为其他原因没能加载完最后的隐藏代码,那就穿帮了。
    比如你上边这个例子,禁用js后,默认会显示个100 x 20的#A0DB0E色框框。

  24. rebuttonsofish / 18:56@2009-01-07 24
    sofish

    真好,回家可以好好学习JQUERY。

  25. rebuttondimlau / 18:56@2009-01-07 25
    dimlau

    设计--》涉及

    我是传说中的白字先生

  26. rebuttonShawn / 19:07@2009-01-07 26
    Shawn

    @dimlau: 好的,demo 已经改了。我真怕谁禁用 JS。。。看来我得向 CSS 派进发。

    @sofish: 我迷惑了,你到底在哪儿呢?深圳?家里?

  27. rebuttonsein / 19:13@2009-01-07 27
    sein

    示意图画的不错

  28. rebutton北极冰仔 / 19:30@2009-01-07 28
    北极冰仔

    最早看到这个创意和实现方法貌似是在 aw 那儿

  29. rebuttonShawn / 19:38@2009-01-07 29
    Shawn

    @北极冰仔: 是的,aw 说过一个最简单的 loading 条方法。不过 jQuery 的 custom animate effects 可以让效果更加好看.根本还是一个顺序问题。如果日后浏览器都学"聪明",把 js 统统延后载入,所有基于 js 的方法都行不通了。

  30. rebuttonwelee / 20:16@2009-01-07 30
    welee

    看来我也该好好下心思学学 JQuery 的应用了,呵呵! :grin:

  31. rebuttonnooidea / 20:29@2009-01-07 31
    nooidea

    等我放假了估计又要每天到你这里自习了。。

  32. rebuttongeuro / 20:30@2009-01-07 32
    geuro

    这个效果真好看。

  33. rebutton爱月 / 20:42@2009-01-07 33
    爱月

    唔~很棒很棒~这个效果很好看~可惜是js的~有点不情愿用~哈哈~回头还是要仔细玩玩滴~

  34. rebutton啦啦啦 / 21:12@2009-01-07 34
    啦啦啦

    @Shawn: 肖大, 能看看我网站是你说的效果么? 我什么都不懂,, 也不知道对不对~

  35. rebuttonShawn / 21:19@2009-01-07 35
    Shawn

    @啦啦啦: 哈哈,基本对了,就是我忘了说一处,导致 loading 被遮住了。
    css
    #loading 里面加一个 z-index:100;

  36. rebutton啦啦啦 / 21:28@2009-01-07 36
    啦啦啦

    @Shawn: loding貌似还是不见... 是加这里"#loading {z-index:100;"还是"#loading div {z-index:100;"这里?
    不过顺便把Lavalamp依葫芦给加上了...

  37. rebuttonShawn / 21:31@2009-01-07 37
    Shawn

    @啦啦啦: 应该是缓存的问题,因为我这里都已经看到了。你清空一下浏览器缓存。

  38. rebuttonSivan / 22:03@2009-01-07 38
    Sivan

    本来aw的效果一直想加但是懒……看到shawn的效果立刻换上,哇咔咔 :wink:

  39. rebutton啦啦啦 / 22:22@2009-01-07 39
    啦啦啦

    @Shawn: 肖大大,, 有什么办法能像你blog里的loading条一样好看捏?

  40. rebuttonMY-Hou / 22:40@2009-01-07 40
    MY-Hou

    你太“邪恶”了 :cool:

  41. rebuttonJohnny / 22:40@2009-01-07 41
    Johnny

    很强大,回头也学着来折腾下看看 :???:

  42. rebuttonxiaorsz / 22:41@2009-01-07 42
    xiaorsz

    很不错的创意!!收藏了!!

  43. rebutton胡戈戈 / 23:18@2009-01-07 43
    胡戈戈

    IE除了body可以支持position:fixed;之外,而且的都属性器都不支持position:fixed;

  44. rebutton胡戈戈 / 23:19@2009-01-07 44
    胡戈戈

    上面的"IE"是IE6,打少个6

  45. rebutton / 23:47@2009-01-07 45
    任

    就这么就过完了???真深奥 :razz:

  46. rebuttonShawn / 23:57@2009-01-07 46
    Shawn

    @Sivan: 看到了,很好看,和主题结合的也好。

    @啦啦啦: 其实,我这个进度条,还真没今天说的这个进度条高级。我的只是一个背景不停滚动的东西,随便找个图片就好了。你可以看看楼上 Sivan 同学放入自己主题后的样子,很好看!

    @MY-Hou: 我怎么邪恶了? :cool:

    @胡戈戈: 对比 position:fixed,我更推荐 position:absolute,或者给 ie6 一个 absolute hack。

    @任: 是啊,总算完了。哈哈

  47. rebuttonTox / 0:05@2009-01-08 47
    Tox

    在新主题里面折腾折腾。喜欢好久了

  48. rebutton啦啦啦 / 0:50@2009-01-08 48
    啦啦啦

    @Shawn: 嗯, 那个漂亮的说.. 看来是颜色也是要搭配好的...

  49. rebuttonShawn / 0:54@2009-01-08 49
    Shawn

    @啦啦啦: 哈哈,当然,我是随便配的色,你可以自己任意搭配的。

  50. rebuttonMY-Hou / 1:41@2009-01-08 50
    MY-Hou

    @Shawn: 
    经常诱惑人做各种“不正当”折腾...“邪恶” :twisted:

  51. rebuttonGeedr.com / 9:04@2009-01-08 51
    Geedr.com

    @Shawn: 大概春节的时候才能回家了, :razz:

  52. rebuttonfqch / 9:04@2009-01-08 52
    fqch

    学习下~~ :grin:

  53. rebuttonadomit / 13:21@2009-01-08 53
    adomit

    又有东西学习了...GR订阅咯.ho~~

  54. rebuttonmarslau / 15:46@2009-01-08 54
    marslau

    不错,支持下

  55. rebuttonZoll / 18:30@2009-01-08 55
    Zoll

    看见你把外链基本上都改成了自己域名下的链接然后JS出去。。
    总是想如果一个不支持,或者关掉了JS功能的浏览器来到这个地方,
    估计很多链接都会404吧^^

  56. rebuttonShawn / 18:37@2009-01-08 56
    Shawn

    @Zoll: 我一直认为,不支持 JS 的浏览器就是半残废。比 IE 恶劣到哪儿去了。很多站点的 Cookies 都依靠 JS,关闭 JS 的浏览器连正常功能可能都使用不到。

  57. rebuttonZoll / 18:55@2009-01-08 57
    Zoll

    @Shawn: 其实也不只是浏览器的原因。我就碰到过这种情况。。
    有时候碰到网络状态不是很好,你的JS很难一下就载完,老看见滚动条在那闪啊闪,然后这些链接就都打不开了。。

  58. rebuttonShawn / 19:09@2009-01-08 58
    Shawn

    @Zoll: 好的,有时间我细化一下 JS,分类载入。

  59. rebuttonShawn / 20:39@2009-01-08 59
    Shawn

    @Zoll: 弄好了,呵呵,谢谢提醒。

  60. rebuttonZoll / 20:50@2009-01-08 60
    Zoll

    @Shawn: 呵呵 貌似快了很多啊~ 强!

  61. rebuttonscavin / 21:01@2009-01-08 61
    scavin

    强悍的效果。。

  62. rebuttonpopdo / 22:32@2009-01-08 62
    popdo

    这个得好好学学。美观又实用! :grin:

  63. rebuttonstephen / 21:05@2009-01-09 63
    stephen

    昨天晚上加入了这个功能,谢谢分享。。

  64. rebuttonaunsen / 22:50@2009-01-09 64
    aunsen

    侧栏链接效果也是相当不错啊!很华丽!

  65. rebutton雪深 / 16:47@2009-01-10 65
    雪深

    没有感觉到快 效果很棒

  66. rebuttonSayisee / 17:18@2009-01-10 66
    Sayisee

    每次来这都要爬楼啊,呵呵。我的博客本来速度就慢,还是考虑一下再说!

  67. rebuttonElton Disney / 22:26@2009-01-10 67
    Elton Disney

    疯鸟!
    每次Shawn童鞋都是在说JQ的东西,恰好这玩意儿我一点都不懂
    放假了一定要学会,然后把你的文章都放来看
    哼哼!

  68. rebuttonneekey / 14:31@2009-01-11 68
    neekey

    那个。。加百分比进度的能做么? 1%..10%..50%..100%

  69. rebuttonShawn / 15:01@2009-01-11 69
    Shawn

    @neekey: 当然可以了,更新了演示,其中 setTimeout 在实际应用中是不需要的,你看一下就明白了。

  70. rebuttonLOKE / 19:47@2009-01-11 70
    LOKE

    封顶咯~~ :wink:

  71. rebuttong.zhen.ning / 21:21@2009-01-11 71
    g.zhen.ning

    看来培训司变designer了 :smile:

  72. rebuttonlife97 / 8:10@2009-01-16 72
    life97

    博主的博客效果很炫。评论应该设置分页了,太长了。

  73. rebuttonShawn / 17:33@2009-01-16 73
    Shawn

    @life97: 评论我一直认为没有必要分页,会增大访客的使用难度,如果速度不受影响,评论不分页反而更直观。

  74. rebutton何必呢 / 21:29@2009-01-17 74
    何必呢

    不算,学习了。为什么你的侧边栏在FF下看会虚呢~

  75. rebuttonShawn / 21:30@2009-01-17 75
    Shawn

    @何必呢: 应该是我设置了透明的关系吧。

  76. rebuttonxiaooole / 14:53@2009-01-18 76
    xiaooole

    很不错,受益不少啊。 :smile:

  77. rebuttonYuri / 2:18@2009-01-25 77
    Yuri

    怎样引入 jQuery 框架啊

  78. rebuttonShawn / 2:52@2009-01-26 78
    Shawn

    @Yuri: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

    这句放在头部就可以了。

  79. rebuttonYuri / 18:39@2009-01-26 79
    Yuri

    @Shawn: 谢谢啊,已经搞好了的说,很有用.希望你以后分享更多技巧

  80. rebuttonsmallshell / 23:03@2009-01-26 80
    smallshell

    呵呵,浏览器都自带进度条的,有点越俎代庖。。。
    ajax载入内容,进度条还有点用。其实我也不喜欢ajax。简单自然最好。

  81. rebuttonleesum / 12:43@2009-02-04 81
    leesum

    炫,就一个字···

  82. rebutton摩摩诘 / 22:30@2009-02-10 82
    摩摩诘

    有Anime应该更好玩一点,哈哈。人肉代码Copy机启动。

  83. rebuttonchancat / 0:03@2009-02-27 83
    chancat

    非常不错,谢谢 又学会一样 :-)

  84. rebuttonsmao / 1:34@2009-03-29 84
    smao

    hi,
    请教一个问题,我的“fadeOut();”放到footer.php中最后的的前边,按理说每次进度条完成后也应该载入完成,可是每次进度条很快,完成后页面还要一点时间,是何等原因?

  85. rebuttonpan / 15:48@2009-04-29 85
    pan

    学习了~~~

  86. rebutton51obj.cn / 9:20@2009-05-20 86
    51obj.cn

    果然很厉害!佩服,一定要学好jquery.

  87. rebutton华晨 / 17:41@2009-05-26 87
    华晨

    好东西啊!收藏了!!

  88. rebuttonbolo / 14:14@2009-06-07 88
    bolo

    不错的主意,是不是所有的主题都可以这样加呢?

  89. rebuttoncrossyou / 15:10@2009-12-30 89
    crossyou

    不错,想法很好,不过我感觉这个进度条 有种很卡的感觉,用户体验上不是很好哇。

  90. rebutton淘宝商城 / 22:34@2010-01-08 90
    淘宝商城

    好方法,我试试

Leave Comments Here...

必填

必填&保密

随您

支持Ctrl+Enter快捷提交

  • 已部署"白忙活" Anti-Spam 系统,猪肉 Spammer 请注意查看源代码链接处。
  • 本站不会泄露您的邮件地址,敬请放心。
  • 支持常用 HTML 代码调用,插入 PHP 代码需注意:< = &lt;> = &gt;
  • 仅当某人针对您的评论做出回应时,您才会收到由本站发出的通知信件。
  • 如您希望以相同方式通知某位网友,请点击 Reply 按钮,或自行输入 @对方名字:
  • 鼠标移至评论列表中的 @someone: 区域即可自动显示 someone 的评论内容。
8 Trackbacks/Pingbacks
  • links for 2009-01-07 « dupola’s weblog(en) (Pingback, 2009-01-08)
    [...] jQuery 页面载入进度条 (tags: ajax) [...]
  • nil's hidden file » jQeury 一二 (Pingback, 2009-01-09)
    [...] Shawn 的一篇文章,给你的 WP 弄个进度条。 [...]
  • 近况~~ | Just A Blog (Pingback, 2009-01-12)
    [...] 2、没有网络那几天就在本地折腾Jat-Theme,现在的版本已经继承了UBD Block Ad Plugin广告轮放、添加了AJAX评论和Loading进度条。首页的布局也有一点点的变化,觉得这样的布局会清晰一点。不足之处还需要大家点评一下。。 [...]
  • jQuery 页面载入进度条 - Fangleo.cn 关注Web前端开发的IT博客 (Pingback, 2009-01-12)
    [...] 原文在这里:http://ishawn.net/tips/loading-status-bar.html 如果你喜欢文本,你可以: 本文链接:http://www.fangleo.cn/article/614.html 这些文章或许你也喜欢...window.location.href不起作用的原因分析4000万股民已成为金融买办要挟中央的人质 DIV CSS布局实例:css网站布局之十步实录!(目录)Piwik:基于PHP技术构建的开源网页访问统计系统写个感性的人看的!【转载】57个常用GOOGLE 产品,你知道几个 [...]
  • 利用jQuery实现页面载入进度条 | imLiony! (Pingback, 2009-01-18)
    [...] 转自Shawn’s Blog 前两天刚看过那个超强的JS版超级玛丽,对其Loading载入时显示的进度条总是念念不忘,一直在想用JS如何精确显示载入进度。没想到没几天就看到肖恩大师的这篇文章,其中的思路可以借鉴不少。 [...]
  • Loading bar added | phill84.org (Pingback, 2009-04-10)
    [...] were taken from jQuery 页面载入进度条 and How to create a stylish loading bar as Gmail in [...]
  • 博客简单优化了一下 | 刘成的博客 (Pingback, 2010-01-08)
    [...] google.load("elements", "1", {packages: "transliteration"}); 首 页seoWordPress个人日志乱七八糟网站赚钱胡搞瞎搞 « 最近天好冷啊 一月 8, 2010WordPress 优化博客简单优化了一下这几天把博客简单的优化装饰了一下,这个优化不是seo。加了一个网页加载(Loading)进度条因为我看一些高手的博客都有这个加载进度条,感觉很酷。所以突然想弄一个到博客上,网上搜索了一下,有教程直接就照着做了。有两个相关的教程:Shawn的jQuery 页面载入进度条和AW的给页面加上Loading效果最简单实用的办法.(顺便一提,我在复制阿瓦的文章标题时发现他的博文标题用的是H4标签,好奇怪呵呵。)这两种效果我都试过了,先用了Shawn的jQuery进度条,后来又换成了AW的loading进度条,因为AW这个比较简单,代码很少。而Shawn的jQuery进度条要加载一个jQuery得库,比较大,当然他这个效果也比较炫。效果可以看AW的博客,Shawn自己的博客上也有loading进度条,不过他的那个倒是比较简单,是用了一个gif图片。这两个高手都写了不同的教程,但是他们自己的博客用的确是对方那种效果,有意思。下图是AW的教程中的效果,我把它加到了博客中。Shawn的loading效果教程演示见这里,他自己博客上还有一种GIF动画效果的loading,很炫。侧栏加了一个大的订阅图片有点心虚,因为我博客上有质量的文章不多,订阅的人也很少,毕竟水平有限,权当装饰吧。HTML优化加了一个Autoptimize插件,这个插件通过优化HTML代码(去除不必要的空格、换行、注释)、CSS代码、JS代码,缓存起来,然后访问的时候输出,访客访问到的是经过优化后的代码,很大程度上节省了流量,同时作者推荐和 WP Super Cache 插件一起使用。当然我是不需要super cache插件的,因为我的博客流量很小。插件安装很简单,后台添加新插件搜索一下点击自动安装就可以了。php代码页简单优化了一下,很多php查询代码因为基本上不会变化,所以我就直接用html代码写死了。完了以后我就想,以后不能再换模板了,不然还要在折腾一遍,麻烦。不过玩WordPress不久是折腾吗,哈哈。日志信息 » 原创文章如转载,请保留链接。本文链接:博客简单优化了一下 如果您觉得我写的不错,可以点击此处订阅RSS。相关日志 »暂无相关日志没有评论▼发表评论 »点击这里取消回复 名称 (必需) 电子邮件 (不会被公开) (必需) 网站 [...]
  • 本站最近的一些界面改进 | 老肥博客 » 非唠不可 (Pingback, 2010-01-13)
    [...] aw 和 Shawn [...]

Shawn Blog

Shawn的个人博客(Blog),分享Wordpress技巧和Firefox浏览器心得,关注Web 2.0应用发展,记录对虚拟主机的使用评价。