首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示静态图像,但与动画GIF交换一次,如果已加载GIF

显示静态图像,但与动画GIF交换一次,如果已加载GIF
EN

Stack Overflow用户
提问于 2015-11-02 14:22:07
回答 1查看 1.2K关注 0票数 0

我正在建设一个网站,是沉重的许多大型(800‘m)动画GIF。我也有每个GIF的第一帧,我计划首先显示,然后再交换到动画GIF的一旦他们已经加载。这样的话,这个网站一开始看起来还不错。

目前,我将GIF url存储在图像标记中,作为“data-gif=‘blh.gif’”。然后,我可以使用jQuery迭代这些代码,以获得GIF。

现在,我不知道如何在后台加载这些文件,并在加载它们时获取一个事件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 15:20:01

你想要一个“图像预加载器”。下面是一个让您开始学习的示例,但我建议搜索一个对处理边缘案例有更多想法的库。

代码语言:javascript
复制
function preload(i, img) {
  console.log(img);
  var $img, url, $pre;
  
  $img = $(img);
  
  // incoming <img/> must have a 'data-gif' attribute
  if (! $img || ! $img.data('gif')) {
    return;
  }

  url = $img.data('gif');
  $pre = $('<img />');

  // Set up handler to replace original images's 'src' attribute
  // with the data-gif URL once the replacement is loaded
  $pre.on('load', function() {
    $img.attr('src', url);
  });

  $pre.attr('src', url);
}

$('#images img').each(preload);
代码语言:javascript
复制
#images img {
  width: 320px;
}

#images {
  list-style: none;
}

#images li {
  margin-bottom: 2rem;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h1>Image preloader test</h1>
<ul id="images">
<li><img src="//placehold.it/960x540/99eeee" data-gif="http://static1.1.sqspcdn.com/static/f/1376538/22414391/1365600694390/typing.gif?token=v5utJCt1OsYJZ%2BIzFfWubDICtZI%3D" /></li>

  <li><img src="//placehold.it/960x540/ee99ee" data-gif="http://static1.1.sqspcdn.com/static/f/1376538/22414389/1365600692520/reading.gif?token=v5utJCt1OsYJZ%2BIzFfWubDICtZI%3D" /></li>

  <li><img src="//placehold.it/960x540/eeee99" data-gif="http://static1.1.sqspcdn.com/static/f/1376538/22414392/1365600694820/wireframe.gif?token=v5utJCt1OsYJZ%2BIzFfWubDICtZI%3D" /></li>

  <li>Broken link: never swaps:<br/><img src="//placehold.it/960x540/999999" data-gif="http://example.com/asfazsdasfd.gif" /></li>

</ul>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33479804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档