热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

backgroundposition和长图实现鼠标悬浮动画效果

以下图片及代码均来自京东云点击这里进入京东云思路和效果图:background-position:00可以用js动态的将长图按帧数一帧一阵的展示出来效果类似gif,红框就是可视界面

以下图片及代码均来自 京东云

点击这里进入京东云

思路和效果图:

《background-position和长图实现鼠标悬浮动画效果》

background-position: 0 0可以用js动态的将长图按帧数一帧一阵的展示出来效果类似gif,红框就是可视界面,当替换的速度合适的时候就变成了动画(有点像小时候看的小人书)

《background-position和长图实现鼠标悬浮动画效果》

用到的最核心的方法是requestAnimationFrame() 类似一个定时器

1 、requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60帧
2、在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的的cpu,gpu和内存使用量。

像setTimeout、setInterval一样,requestAnimationFrame是一个全局函数。调用requestAnimationFrame后,它会要求浏览器根据自己的频率进行一次重绘,它接收一个回调函数作为参数,在即将开始的浏览器重绘时,会调用这个函数,并会给这个函数传入调用回调函数时的时间作为参数。由于requestAnimationFrame的功效只是一次性的,所以若想达到动画效果,则必须连续不断的调用requestAnimationFrame,就像我们使用setTimeout来实现动

<stylt>
.nav-item-icon {
display: block;
width: 90px;
height: 90px;
margin: 0 auto 15px;
background-size: auto 90px;
background-position: 0 0;
background-repeat: no-repeat;
}
style>
<div class="nav-animation">
<div class=" nav-item-icon" style="background-image: url(img/12.png);">

div>
div>

<div class="nav-animation">
<div class=" nav-item-icon" style="background-image: url(img/12.png);">

div>
div>

<div class="nav-animation">
<div class=" nav-item-icon" style="background-image: url(img/12.png);">

div>
div>

$(function() {
$(".nav-animation").each(function() {
b(this)
});
function b(a, b) {
function c() {
//给元素动态添加属性
g.css({
"background-position": "-" + j * h + "px 0"
})
}
function d() {
h++, i > h ? (c(), f = requestAnimationFrame(d)) : cancelAnimationFrame(f)
}
function e() {
h--, h >= 0 ? (c(), f = requestAnimationFrame(e)) : cancelAnimationFrame(f)
}
var f, g = $(a).find(".nav-item-icon"),
h = 0,
i = 20,//20是图片有20帧,根据实景情况修改
j = 90;//90是图片的宽度,也就是每一帧移动的距离
$(a).hover(function() {
cancelAnimationFrame(f), f = requestAnimationFrame(d)
}, function() {
cancelAnimationFrame(f), f = requestAnimationFrame(e)
})
}
});
}

推荐阅读
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • 项目风险管理策略与实践
    本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ... [详细]
author-avatar
陈怡伶翰纬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有