javascript - 在加载文档之前隐藏图像,然后对其应用效果

标签 javascript jquery html css

我试图找到一种简单但可靠的方法来隐藏图像直到它被加载,然后给它一些 jQuery 效果(例如 fadeIn)但是我找到的所有方法似乎有一些问题。例如,这个解决方案:

<img id="photo" src="bigimage.jpg" style="display:none" />

$("#photo").load(function() {
    $(this).fadeIn("slow");
});

如果在 DOM 准备好之前加载图像,则可能不会触发(load() 不会触发)。

所以我写了下面的内容,它只在图像确定加载后才添加 URL...

$.fn.ImageLoad = function(url){
        $image = $(this);
        $("<img >").attr("src", url).load(function(){ 
            $image.attr("src", url);
        });
        return $image;
}; 

$("#cast").ImageLoad("http://pas-wordpress-media.s3.amazonaws.com/wp-content/uploads/2013/08/Google-Office-Building-in-NYC.jpg").fadeIn("slow");

但它只会在图像被浏览器缓存后运行 fadeIn("slow")。第一次加载时,它只是出现,没有任何效果。

在这里见你自己: http://jsfiddle.net/KKn4N/

有什么办法可以解决这个问题吗?

最佳答案

这是我的版本。每次都有效并且完全跨浏览器。

$.fn.ImageLoad = function(url){
    $this = $(this);
    $this.hide().on('load', function(){
        $this.fadeIn();
    });
    this[0].src = url;
};

关键是

  • 在回调中淡入淡出
  • 先躲起来
  • 在设置 .src 之前监听 .load

DEMO

关于javascript - 在加载文档之前隐藏图像,然后对其应用效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549965/

相关文章:

javascript - 使用 Javascript 搜索具有精确标签的 JSON

javascript - 无法制定innerHTML 设置

html - 使 div 与父级中最大的 div 大小相同

html - 无法悬停在 img 元素上,当 img 悬停时无法旋转元素

javascript - jQuery 绑定(bind)到新附加的元素上

javascript - Jquery 数据表过滤器

javascript - 旋转 90/-90 度的图像模糊 jquery 旋转

javascript - 单击链接播放音频剪辑

javascript - 在jquery中删除div及其子元素

javascript - 如何在 reader.onload 函数之外存储 dataURL