背景图跟随鼠标移动的Mootools插件实现代码


Posted in Javascript onDecember 12, 2011

效果演示:
背景图跟随鼠标移动的Mootools插件实现代码
源代码:

<script style="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js"></script> 
</head> 
<body id='a'> 
<h2 class='a'>Single images</h2> 
<div id='bsfdimg' style='background:url("/upload/201112/20111212204031245.jpg") no-repeat scroll -50px -50px transparent;width:260px;height:200px;' w='392' h='600'></div> 
<script type='text/javascript'> 
var MoveBKimg=new Class({ 
initialize:function(){ 
this.$L=0; 
this.$T=0; 
}, 
Todo:function(i,opt){ 
this.opt={ 
bw:opt.bw || 0, //容器宽度 
bh:opt.bh || 0, 
iw:opt.iw || 0, //图像宽度 
ih:opt.ih || 0, 
X:opt.X || 0, //鼠标的clientX坐标 
Y:opt.Y || 0 
};o=this.opt; 
if(!i || !o.iw || !o.ih || !o.bw || !o.bh){return false;} 
o.iw=o.iw-o.bw; //图像实际可被移动的x轴范围 
o.ih=o.ih-o.bh; 
var P=i.getStyle('background-position');P=P.split(" ");//取得目前背景图的position值,并拆分转为Int型 
P[0]=P[0].toInt();P[0]=(P[0].abs()>o.iw)?((P[0]<0)?-o.iw:o.iw):P[0];//背景图目前的X偏移,并对值进行2次修正 
P[1]=P[1].toInt();P[1]=(P[1].abs()>o.ih)?((P[1]<0)?-o.ih:o.ih):P[1]; 
console.log(o.X+'|'+o.Y); 
if(o.X>this.$L){//往右移鼠标图片往左跑 




this.$L=o.X; 
P[0]=(o.iw<(P[0]-10))?o.iw:(P[0]-10); 
} 
if(o.X<this.$L){//往左移鼠标图片往右跑 





this.$L=o.X; 
P[0]=((P[0]+10)>0)?0:(P[0]+10); 
} 
if(o.Y>this.$T){//往下移鼠标图片往上跑 





this.$T=o.Y; 
P[1]=(o.ih<(P[1]-10))?o.ih:(P[1]-10); 
} 
if(o.Y<this.$T){//往上移鼠标图片往下跑 





this.$T=o.Y; 
P[1]=((P[1]+10)>0)?0:(P[1]+10); 
} 
i.setStyle('background-position',''+P[0]+'px '+P[1]+'px');//重新给背景图的position赋值 
} 
}); 
El=$('bsfdimg'); 
var MoveBKimg=new MoveBKimg(); 
El.addEvent('mousemove',function(event){ 
MoveBKimg.Todo(El,{bw:260,bh:200,iw:392,ih:600,X:event.client.x,Y:event.client.y}); 
}) 
</script>
Javascript 相关文章推荐
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
May 10 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
详谈Node.js之操作文件系统
Aug 29 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
Node做中转服务器转发接口
Oct 18 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
Vue动态路由缓存不相互影响的解决办法
Feb 19 Javascript
p5.js临摹旋转爱心
Oct 23 Javascript
用Mootools获得操作索引的两种方法分享
Dec 12 #Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 #Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 #Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 #Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 #Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 #Javascript
FireFox下XML对象转化成字符串的解决方法
Dec 09 #Javascript
You might like
php动态生成函数示例
2014/03/21 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
意大利团购网站:Groupon意大利
2016/10/11 全球购物
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
2013的个人自我评价
2013/12/26 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
离职报告范文
2014/11/04 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
道士塔读书笔记
2015/06/30 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
JavaScript的Set数据结构详解
2022/02/18 Javascript
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python