Fadein()效果到一个函数:怎么样?

时间:2016-11-14 15:22:30

标签: javascript jquery fadein fadeout

我有这个功能,适用于延迟加载。

panel.find('img[data-src]').each(function(){
            element = $(this);
            element.attr('src', element.data('src'));
            element.removeAttr('data-src');

如何为removeAttr函数赋予fadeIn()效果?
我试过了:

element.removeAttr('data-src').fadeIn();

但它不起作用。 img代码看起来像这样,我只想让dot.png fadeOut和original.jpg淡入。

<img src="dot.png" data-src="original.jpg">

http://jsfiddle.net/7s1yb1un/6/
提前致谢

5 个答案:

答案 0 :(得分:10)

您无法淡化img元素上的src更改。要实现这一点,您需要两个img元素。第二个将有一个src "original.jpg",并且会有一个更高的z-index,并以display: none作为样式开头。然后你可以淡入它,它会在点上淡入。

编辑鉴于您的新问题,您可以执行以下操作:

  1. 为图片添加onload侦听器
  2. 在更改“src”之前,将图像淡出
  3. 然后将“src”更改为“original.jpg”
  4. onload功能中,执行fadeIn

答案 1 :(得分:5)

这就是我所做的。

添加了fadeOut(5000),原始src的img将在5 sec之后淡出。 称为超时为6sec的函数,会在5秒内将srcdata-srcfadeIn(5000)进行更改,我希望这可以解决您的问题。

JS代码在

之下
var myVar;
function myFunction() {
    myVar = setTimeout(function(){ 
        var src = $("img.hide").attr("data-src");
        $("img.hide").attr("src",src);
        $("img.hide").fadeIn(5000); 
    }, 6000);
}

function myStopFunction() {
    clearTimeout(myVar);
}

$(document).ready(function() {
  $(".hide").fadeOut(5000);
  myFunction();  
});

答案 2 :(得分:2)

以下代码会淡出,更改src,然后淡入。

JSFiddle

HTML

<div id="fullpage">
  <div class="section">
    <img class="fadeable" src="http://1.gravatar.com/avatar/767fc9c115a1b989744c755db47feb60?size=800" data-src="http://2.gravatar.com/userimage/5/ff5263e8c30557b57e64423ee8496e41?size=800" width=100 height=100 alt="smile"></div>
</div>

JS

$(function() {
  $('img[data-src]').each(function(i, e) {
    // cache element
    original_img = $(e);
    original_img
    .fadeOut(function(){
      original_img.attr('src', original_img.attr('data-src'))    
    })
    .fadeIn();
  })
});

答案 3 :(得分:0)

谢谢你们。我发现这个脚本工作(不知何故),图像有时会闪烁。我不知道语义是否正确。

$(function() {
$('img').one("load", function() {
var e = $(this);
e.data('src', e.attr('data-src'));
e.animate({"opacity": 0}, 400);
e.data('src');
e.animate({"opacity": 1}, 400);
})
});

答案 4 :(得分:0)

以下代码将克隆具有data-src属性的图像,然后隐藏克隆,更新克隆src,将其放置在原始图像上,然后淡入。这是否适合您?

JSFiddle

HTML

<div id="fullpage">
  <div class="section">
    <img class="fadeable" src="http://1.gravatar.com/avatar/767fc9c115a1b989744c755db47feb60?size=800" data-src="http://2.gravatar.com/userimage/5/ff5263e8c30557b57e64423ee8496e41?size=800" width=100 height=100 alt="smile"></div>
</div>

JS

$(function() {
  $('img[data-src]').each(function(i, e) {
    // cache element
    original_img = $(e);
    // get position of original image
    offset_left = original_img.offset().left;
    offset_top = original_img.offset().top;
    // get data-src of
    data_src = original_img.attr('data-src');
    // clone original image
    original_img.clone()
    .hide()
    // put it directly in the body, so it can be positioned
    .appendTo('body')
    // set the new src
    .attr('src', data_src)
    // place it over the original image
    .css({
        "left": offset_left,
      "top": offset_top,
      "position": "absolute"
    })
    .fadeIn(function(){
        original_img.attr('src', data_src);
        $(this).remove();
    });
  })
});