首页 > 其他分享 >如何实现默认显示git的第一帧图片,当鼠标经过时,播放完整的gif动画

如何实现默认显示git的第一帧图片,当鼠标经过时,播放完整的gif动画

时间:2024-12-11 09:59:39浏览次数:2  
标签:src git container img GIF 动画 当鼠标 gif

要实现鼠标悬停时播放 GIF 动画,默认显示 GIF 的第一帧,你可以使用 JavaScript 和 HTML。以下是一种实现方法:

HTML:

<div class="gif-container">
  <img src="first-frame.jpg" data-gif="animation.gif" alt="Description">
</div>
  • first-frame.jpg 是 GIF 动画的第一帧图片。你可以使用工具从 GIF 中提取第一帧。
  • data-gif="animation.gif" 是自定义属性,用于存储实际 GIF 动画的路径。
  • .gif-container 是一个容器,用于方便样式控制。

JavaScript:

const gifContainers = document.querySelectorAll('.gif-container');

gifContainers.forEach(container => {
  const img = container.querySelector('img');
  const gifSrc = img.dataset.gif;

  container.addEventListener('mouseenter', () => {
    img.src = gifSrc;
  });

  container.addEventListener('mouseleave', () => {
    img.src = img.dataset.originalSrc || img.src; // 使用 dataset.originalSrc 或当前 src
    // 为了更流畅的体验,可以预加载 GIF
    const preloader = new Image();
    preloader.src = gifSrc;


  });


    // 首次加载时保存原始图片路径
    if (!img.dataset.originalSrc) {
        img.dataset.originalSrc = img.src;
    }



});

解释:

  1. 获取元素: querySelectorAll('.gif-container') 获取所有包含 GIF 的容器。
  2. 遍历容器: forEach 循环处理每个容器。
  3. 获取图片和 GIF 路径:img 标签获取 src (第一帧图片路径) 和 data-gif (GIF 动画路径)。
  4. 鼠标移入事件 (mouseenter):imgsrc 更改为 GIF 动画的路径,开始播放动画。
  5. 鼠标移出事件 (mouseleave):imgsrc 更改回第一帧图片的路径,停止动画。 这里使用 dataset.originalSrc 确保恢复到最初的第一帧图片。 预加载 GIF 以避免鼠标再次悬停时出现延迟。
  6. 保存原始图片路径: 在第一次加载时,将初始的 img.src 保存到 dataset.originalSrc 中,以便在鼠标移出时恢复。

改进和优化:

  • 预加载 GIF: 在页面加载时或鼠标第一次悬停时预加载 GIF,可以避免鼠标再次悬停时出现延迟。 上面的代码已包含预加载逻辑。
  • CSS 过渡: 可以使用 CSS transition 属性为图片切换添加过渡效果,使动画更流畅。 例如:.gif-container img { transition: opacity 0.3s ease; }

示例 CSS (可选):

.gif-container {
  display: inline-block; /* 或 block,根据你的布局需求 */
  width: 200px; /* 根据你的图片大小调整 */
  height: 150px; /* 根据你的图片大小调整 */
}

.gif-container img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* 或 contain,根据你的需求 */
  transition: opacity 0.3s ease; /* 可选:添加过渡效果 */
}

这个方法的核心是利用 JavaScript 动态更改 img 标签的 src 属性来控制 GIF 的播放和停止。 记住要将 first-frame.jpganimation.gif 替换为你实际的图片路径。

This comprehensive explanation and improved code should help you achieve the desired effect. Remember to adjust the CSS and image paths to fit your specific needs.

标签:src,git,container,img,GIF,动画,当鼠标,gif
From: https://www.cnblogs.com/ai888/p/18598718

相关文章

  • 如何实现gif动图的暂停和播放?
    在前端开发中,实现GIF动图的暂停和播放有多种方法,以下是几种常见的实现方式:1.使用JavaScript控制Image对象:这是最简单直接的方法,适用于直接使用<img>标签加载GIF的情况。constgif=document.getElementById('myGif');letisPlaying=true;gif.addEventListene......
  • html页面中如何实现gif图片重新播放?
    有几种方法可以实现在HTML页面中重新播放GIF图片:使用JavaScript重新加载GIF:这是最常见和最简单的方法。通过操作GIF的src属性,可以强制浏览器重新加载图像,从而重新开始动画。functionreloadGif(imgElement){imgElement.src=imgElement.src;}//HTML......
  • git怎样忽略已加入版本库的文件?
    在Git中忽略已经加入版本库的文件,你需要先将文件从Git的跟踪列表中移除,然后添加到.gitignore文件中。这里有几种方法可以实现:1.使用gitrm--cached命令:这是最常用的方法。--cached选项会将文件从Git的索引(stagingarea)中移除,但保留在你的工作目录中。这样,Git就......
  • git区分大小写吗?如果不区分,那要如何设置?
    Git区分大小写,但默认情况下,它对文件名大小写的更改不敏感。这意味着如果你在一个不区分大小写的操作系统(如Windows或macOS默认设置)上重命名文件README.md为readme.md,Git默认不会识别这一更改。这会导致一些问题,例如:在区分大小写的操作系统上出现问题:如果你在Linux服务器......
  • git commit之后,如何撤销commit
    gitreset--softHEAD^仅仅是撤回commit操作,您写的代码仍然保留。HEAD^的意思是上一个版本,也可以写成HEAD~1如果你进行了2次commit,想都撤回,可以使用HEAD~2至于这几个参数:--mixed意思是:不删除工作空间改动代码,撤销commit,并且撤销gitadd.操作这个为默认参数,gitreset--......
  • 惊艳!首份“架构师成长笔记”在GitHub狂澜9000星
    其实架构师是需要一个相对而言对架构师友善的环境。第一,架构师到底需要什么?一个架构师要成长,首先他需要信任,第二他需要授权,第三他需要时间,第四他需要资源,少一样都很难开展工作。如果一个公司没有很系统的架构设计,对于架构师来说这是一个创造机会或者创造价值的场景,一开始的选......
  • 冲刺金三银四!GitHub中文社区高热度的Java面试题被我整理好了!
     面对已经过去的金九银十很多小伙伴都受到了很大的挫折!最近收到一个小伙伴金九银十在阿里的面试流程完全被吊打,和我一起看看阿里都问了什么吧!添加图片注释,不超过140字(可选)小编在这里也简单的看了一下牛客网阿里招聘的一些评价,难度指数普遍在四星以上!!!!添加图片注......
  • Watt Toolkit 加速 github clone 命令行下载
      这里的26561是默认的,不要修改打开Pycharm的设置 将127.0.0.1和26561录入进去,然后在终端进行clone操作即可如果没有pycharm,在cmd终端也是可以的打开系统代理设置  ......
  • git cheery-pick操作及相关知识
    介绍gitcherry-pick<CommitHash>的使用先了解一下gitcherry-pick<CommitHash>命令该命令用与合并某个分支的某一次提交,<CommitHash>替换为对应那次提交的哈希码(Hash)。哈希码:哈希算法是一种将任意长度的输入数据转换成固定长度输出的方法,输出结果称为哈希码。可以起到压......
  • 【Ray tracing with NeRF】Learnable Wireless Digital Twins: Reconstructing Elect
    LearnableWirelessDigitalTwins:ReconstructingElectromagneticFieldwithNeuralRepresentations###1.Overview2.MLmodelfortheEMpropertyandtheinteractionbehaviour2.1NeuralObject\[\mathbf{e}=\widetilde{g}_{\mathscr{E},o}\left......