我正在尝试实现一个“淡入”脚本,该脚本会影响两个图像:

<script type="text/javascript">

  $(document).ready(function(){

        $('img').mouseover( function() {

              $(this).fadeOut(200, function() {

                    $(this).attr({'src':'http://example/images/image.png'});

               if (this.complete) $(this).fadeIn(500);

              });
        });

  });

</script>

这段 jQuery 给了我以下内容:

1-首先,图像逐渐消失并消失2-然后,从空白空间中出现了新图像。

所以我想改进脚本以获得真正的“淡入”效果。

我现在一直在探索两个很棒的资源:

  • 循环插件 - 非常酷(我会尝试在悬停时获得循环效果)
  • 设计师的 JQuery 很酷,但是我在使用 IE 时遇到了很多问题(淡入时有一个奇怪的黑色像素化边框)。

如果有人能指出最终的额外解决方案,非常感谢。

编辑 :CSS 技巧/解决方案在这里 http://paragraphe.org/stackoverflowdemos/crossfade-images/

有帮助吗?

解决方案 2

最近我发现了一个以 CSS 为中心的解决方案:将一个图像绝对定位在另一个图像“上方”,在文档准备好时使用 jQuery 将其淡入到 0,并在鼠标悬停时淡入完全/在鼠标移开时再次淡入 0。

其他提示

您调用第二个淡入淡出的方式(作为对原始淡入淡出的回调)将保证它们一个接一个地执行。

可能会有更多的运气

$('img').mouseover( function() {
          $(this).fadeOut(200);
          $(this).attr({'src':'http://example/images/image.png'});
          if (this.complete) $(this).fadeIn(500);
        });

尽管您仍然会随心所欲地决定第二张图像的加载时间,除非它已在某处预加载。

这是一种冗长的修复,但这是我为了获得平滑的淡入淡出而所做的。我使用 Fadeout,然后作为回调,使用 $.ajax 实际加载新图像,然后使用成功:将其添加到 div(或 img)的功能,然后使用完整的:功能使其淡入。这会导致平滑的淡出-新内容-淡入操作。

下面是加载php文件的例子,原理与图片相同:

$("#leftbar").fadeOut("normal", function() {
$.ajax({
    url: "bin/leftBar.php",
    cache: "false",
    success: function(data) {
        $("#leftbar").html(data);
    },
    complete: function() {
        $("#leftbar").fadeIn("normal");
    }
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top