邪罗刹的菠萝阁


> 因为不可抗拒的因素,小邪昨天下午和今天上午都在离地球上最近的电脑有11公里的地方。
> 终于,在春哥的保佑之下,小邪终于在今天下午回到了我可爱的电脑面前。

> 呵呵,这篇文章讲的东西灰常简单,因为昨天没法一日一博,只好今天早晚各一篇。
> 以弥补各位看官受伤的心灵,小邪可是很善良的喔 (*^__^*) ,哇卡卡卡卡 O(∩_∩)O。

1. 图片载入提示 Demo 传送门:

> 小邪已经使用 Opera Safari Firefox Chrome IE6 测试过图片载入提示的代码了。
> 现在浏览器缓存机制十分强大,所以如果想多次浏览,请使用 Ctrl+F5 无缓存刷新。
> 额,这个快捷键在 FF 里是可以用的,其他浏览器小邪就不清楚咯。

> http://www.evlos.org/apps/demo/images_loading

2. 当然要先载入 jQuery 库:

> 呵呵,这是为新来的童鞋提供的步骤,老童鞋就请直接跳过咯。
> 貌似原来的 lastest.js 不见了,可能太多人载入这个文件,官方服务器挺不住。
> 所以这个还是在 Google 服务器上托管的 JS 文件,请放心使用 O(∩_∩)O。

<script type="text/javascript"
src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>

3. 然后载入图片Loading提示的 jQuery 插件:

<script type="text/javascript">
(function($){
jQuery.fn.LoadImage=function(settings){
settings = jQuery.extend({ scaling : true,
width : 500,height : 500,loadpic:"" }, settings);
return this.each(function() {
$.fn.LoadImage.Showimg( $( this ), settings );
});};
$.fn.LoadImage.Showimg = function($this, settings){
var src=$this.attr("src");
var img=new Image();
img.src=src;
var autoScaling=function(){
if (settings.scaling) {
if (img.width > 0 && img.height > 0) {
if (img.width / img.height >= settings.width / settings.height) {
if (img.width > settings.width) {
$this.width(settings.width);
$this.height((img.height * settings.width) / img.width);
}else {
$this.width(img.width);
$this.height(img.height);
}}else {
if (img.height > settings.height) {
$this.height(settings.height);
$this.width((img.width * settings.height) / img.height);
}else {
$this.width(img.width);
$this.height(img.height);
}}}}}
$this.attr("src","");
var loading=$("<img alt=\"加载中...\" title=\"图片加载中...\" src=\""
+settings.loadpic+"\" />");
$this.hide();
$this.after(loading);
$(img).load(function(){
autoScaling();
loading.remove();
$this.attr("src",this.src);
$this.show();
});}})(jQuery);
</script>

4. 设置此 jQuery 插件的参数:

> Loadpic 是设置提示图片的路径,宽度高度就不用管它了。
> 这个宽度高度是图片最大高和图片最大宽,按比例缩放的,不过我们用不到。

<script type="text/javascript">
$(function(){
	$("img").LoadImage({scaling : true,
			width : 3000,
			height : 3000,
			loadpic:"imgload.gif"});
});
</script>
Leave a comment
53 Comments.
  1. kaka Mozilla Firefox Windows 坐沙发!#1

    我首页那么多图片。。本身就慢。估计用上这个会更慢。。

    @
    • @kaka , Orz .... 我再也不用防评论插件了,连你的评论也给弄进去鸟 ~
      ----------------
      ╮(╯▽╰)╭ 呵呵,这篇文章讲jQuery和用户体验而已 ~
      在浏览器没有内置 jQuery 之前,讲速度可没意义呢 ~

      @
  2. jquery太神奇了

    @
  3. 一米 Internet Explorer Windows 躺地板!#3

    我还想抢沙发来着,看来晚了,哎!

    @
  4. SATURN Mozilla Firefox Windows 天花板!#4

    一日一博,不错不错~~ :rolleyes:

    @
  5. keon Google Chrome Windows 下水道!#5

    好东西~~立马去折腾

    @
  6. 直接css里给每个img加个loading图片背景不就行了。。。用于日志中的图片很少有透明的吧。。如果有需要清除背景中的loading图片,也就一句代码就行了。。

    @
    • @QiQiBoY , 貌似那个img如果不指定宽度的话,图片背景在src图片没载入之前显示不出来的吧 ~

      @
      • @邪 罗刹,
        你试一下就知道了,css方法远好于jQuery,背景图片就是在图片载入前显示的,不指定宽度高度也是有的。。
        jQuery本身就那么大,这个方法在图片很大很多情况下还可以看到背景,但是你那个demo里我刷新好多次硬是没看到效果出来。
        我就是用css方法,全站图片都加上了loading,并加上载入完成时自清除背景图片,以防万一,还用jQuery在网页文档载入完成15秒后清除全站图片的背景。你可以到我那里找个图片多的日志看一下。。或者看评论头像也行。。。我的头像是透明的,你可以很清楚看到后面的loading图片。。。记得刷新之后看。。。

        @
    • @QiQiBoY , Orz ....... 我CSS方法硬是弄不出来才找jQuery的 ~ 去你站上看看 ~

      @
  7. 有点像编程哦

    @
  8. jQuery插件也是应有尽有呀!

    @
  9. 比我介绍的那个载入提示完美多了。。。

    @
  10. 兄台,我的博客换了国内的空间,以前的被和谐了 友情连接麻烦修改一下
    给你添麻烦了

    @
  11. 看插件不是太懂耶~~是new 一个 Image 出来 ,然后设置高宽,然后这句$(img).load看不明白了~~插件是你自己写的?能不能说说大概思路?

    @
    • @fatkun,
      呵呵,插件不是我写的,是网上某位高人(找不到是谁,╮(╯▽╰)╭)~
      $(img).load 是选择器加函数 ~
      不用新建图像的啦, :smile: ~
      大概就是图像未完全载入的时候显示 imgload.gif ~
      载入好换回来 ~ 换的是 img 标签里的 src 以及高宽度 ~

      @
  12. 很好,很强大! :rolleyes:

    @
  13. 把JS文件放在别的服务器,这个思路很好呀!

    @
  14. 呵呵,不错不错。。。学习了。。jQuery是强大的。 :mrgreen:

    @
  15. 好喜欢 jQuery 的动态感觉 :cool:

    @
  16. 上个网有那么大诱惑吗

    @
  17. 来晚了都不好意思留言了

    哈哈 支持jQuery!支持小邪!

    @
  18. 可爱滴电脑...哈哈,看来邪兄也是宅男乎?

    @
  19. jquery。现在很火啊,现在发现了,只要学习,跑你博客来就没错了。真的,虚心学习中

    @
  20. 实际作用不大,不过可以缓解一下等待的情绪,不错

    @
  21. 给博客使用这个好呢还是不是用好呢???

    @
    • @疾风 , 如果你的博客已经在某个位置载入了 jQuery 库,那么就用着玩吧 ~
      如果没载入,呵呵,那看个人兴趣咯,毕竟 jQuery 库蛮大的说 ~

      @
  22. 第一句证明 网虫 我也是

    @

Leave a Reply


[ Ctrl + Enter ]